ZXing 二维条码解码:UTF-8 字符未正确解码
ZXing 2D barcode decoding: UTF-8 characters not decoded properly
我正在尝试使用 ZXing 读取二维条码,它大部分工作正常,除了它不能真正识别一些 UTF-8 字符,如 č 和 ć。我正在使用此代码设置编码:
MultiFormatReader reader = new MultiFormatReader();
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
reader.setHints(hints);
result = reader.decode(bitmap);
我是不是做错了什么?
编辑:我也试过为接收提示的解码调用重载,但结果是一样的。
看来我创建位图的方式有误。这有效:
MultiFormatReader reader = new MultiFormatReader();
FileInputStream fis = new FileInputStream(filePath);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(
ImageIO.read(fis))));
Result result = reader.decode(bitmap);
String originalText = result.getText();
byte[] bytes = originalText.getBytes("ISO-8859-1");
String outputText = new String(bytes, "UTF-8");
我正在尝试使用 ZXing 读取二维条码,它大部分工作正常,除了它不能真正识别一些 UTF-8 字符,如 č 和 ć。我正在使用此代码设置编码:
MultiFormatReader reader = new MultiFormatReader();
Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
reader.setHints(hints);
result = reader.decode(bitmap);
我是不是做错了什么?
编辑:我也试过为接收提示的解码调用重载,但结果是一样的。
看来我创建位图的方式有误。这有效:
MultiFormatReader reader = new MultiFormatReader();
FileInputStream fis = new FileInputStream(filePath);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
new BufferedImageLuminanceSource(
ImageIO.read(fis))));
Result result = reader.decode(bitmap);
String originalText = result.getText();
byte[] bytes = originalText.getBytes("ISO-8859-1");
String outputText = new String(bytes, "UTF-8");