我在使用zxing api生成正确的qr代码时遇到问题。 我能够生成一个qr-code但是当我读到qr-code时,那些像“äü”这样的字符显示不正确。
代码:
BitMatrix matrix = writer.encode(text, BarcodeFormat.QR_CODE, 200,200);
//text is String text = "geändert";
bufferedImage = MatrixToImageWriter.toBufferedImage(matrix);
如果我以“ü”开头,然后是“äö”,那么它显示正确 有谁知道为什么?
答案 0 :(得分:2)
您可以从以下代码中阅读zxing api的QR码。
binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream("QR_Code.JPG")))));
result = new MultiFormatReader().decode(binaryBitmap);
System.out.println("QR Code : "+result.getText());
答案 1 :(得分:1)
如果你看一下zxing http://code.google.com/p/zxing/wiki/DeveloperNotes的开发者文档,你会发现他们明确地谈到了基于非拉丁语字符的问题。
由于QR码标准没有定义在QR码中特定字符编码的确切方法,因此建议仅使用出现在所有三种标准编码中的字符(ISO-8859-1,ISO-8859-15, UTF-8)
答案 2 :(得分:1)
在传递编码器的Hashtable
提示中,将EncoderHintType.CHARACTER_SET
设置为"UTF-8"
。 Barry的回答是正确的,但强迫它尝试使用UTF-8可能会更适合你。
答案 3 :(得分:1)
您可以从以下代码中阅读zxing api的QR码。
binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(ImageIO.read(new FileInputStream("QR_Code.JPG")))));
result = new MultiFormatReader().decode(binaryBitmap);
System.out.println("QR Code : "+result.getText());