我想从条形码阅读器中获取字符串。就我而言,我有霍尼韦尔条形码阅读器。
实际字符串:10008-3TE40M181446-183A-976R
但是当我用toast方法显示它时它正在预览,即10008-3TE40M181446-183A-976R
但是当我尝试使用日志功能在控制台上打印时,它打印为10008-3 TE40 M181446-183 A-9767 R
读取条形码字符串的代码:
if (e.getAction() == KeyEvent.ACTION_DOWN) {
char pressedKey = (char) e.getUnicodeChar();
barcode += pressedKey;
if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER && !Check.isEmpty(barcode.toString())) {
showToastInCenter(barcode);
searchByBarcode(barcode.trim());
barcode = "";
return true;
}
}
}
public void showToastInCenter(String message){
Toast.makeText(MainActivity.this, gmessage, Toast.LENGTH_SHORT).show();
编辑:
正如this link所说, 是替换字符。
正如我已经阅读了其他堆栈溢出答案,该答案表明如果UTF-8无法检测到任何字符,那么它将替换为此“替换字符”。也许字符串有ISO-8889-1字符集。
但现在问题是如何将其转换为UTF-8字符集。
也许扫描仪会通知CapsLock密钥或NumLock密钥的Make / Break?
由于它不是字符键,因此它似乎是替换字符,作为UTF-8中未包含的无效值。
例如,请参阅扫描仪设置手册“第2章 - 编程接口”中的键盘样式,键盘转换,控制字符输出等说明。
尝试更改这些设置,或检查通知的密钥代码的值,并更改为不添加条形码数据的处理,但字符和输入等有效值除外。