Java 如何使用Zxing项目在二维码中使用UTF-8编码字符?

Java 如何使用Zxing项目在二维码中使用UTF-8编码字符?,java,android,qr-code,zxing,Java,Android,Qr Code,Zxing,Zxing项目是一个著名的开源、多格式的1D/2D条形码图像处理库,用Java实现,具有与其他语言的端口。但我相信有人和我一样有同样的问题:我不能在QR码中编码UTF-8字符 如何使用Zxing项目在二维码中使用UTF-8编码字符?正确的方法是使用提示: Hashtable hints = new Hashtable(); hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); 然后在QRCodeWriter类中调用此版本的encode:

Zxing项目是一个著名的开源、多格式的1D/2D条形码图像处理库,用Java实现,具有与其他语言的端口。但我相信有人和我一样有同样的问题:我不能在QR码中编码UTF-8字符


如何使用Zxing项目在二维码中使用UTF-8编码字符?

正确的方法是使用提示:

  Hashtable hints = new Hashtable();
  hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
然后在
QRCodeWriter
类中调用此版本的
encode

  encode(String contents, BarcodeFormat format, int width, int height,Hashtable hints)

史密斯先生的回答很正确。但是在使用
ZXing
编码时,您需要使用小写的
utf-8
而不是大写的
utf-8
。或者一些扫描仪,如支付宝无法读取

Hashtable hints = new Hashtable();
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");

我发现有一个API更简单:

.withCharset("utf-8")
例如:

Bitmap bitmap = QRCode.from([string])
                   .withSize([width], [height])
                   .withCharset("utf-8")
                   .bitmap();

请将此问题改为一个技术上更准确的问题(没有“UTF-8字符”,有“然后用UTF-8编码以获得二进制表示的字符”),然后回答您自己的问题。目前,这个“问题”并不适合这个网站。这是一个很好的回答,一个很好的表述,有洞察力,深入研究的答案。问题是什么?抱歉,这不是一个问题,我只是想分享如何为其他人解决这个问题……我应该怎么做?@Bluegray-编辑您的问题,使其成为一个问题。例如,“如何在使用Zxing项目的二维码中使用UTF-8对字符进行编码?”接下来,将您对如何进行编码的描述添加到下面的答案中。这允许人们对你的答案进行评论和投票,如果他们知道更好/不同的方法,还可以添加他们自己的答案。我可以为你做这件事,但答案是以我的名义,我不想拿你的积分@DaveWebb:非常感谢,我会修改我的问题。我使用中兴项目的Core.jar,并正确使用您的代码,虽然Qr码可以生成,但如果我使用“Qr Droid”或“QuickMark”应用程序来解码此Qr码,则无法解码。无论如何,谢谢你的帮助和回答。:)这是因为这些应用程序没有使用UTF-8解码提示,所以这是预期的行为。如果您正在编写解码应用程序,您可以通过
multiformatrader
一个提示哈希表,将所需的字符集与
DecodeHintType.CHARACTER\u SET
一起作为键。这非常令人惊讶!你知道为什么会发生这种情况吗?我看到了
QRCode
,但我没有看到
from()
方法,你从哪里得到的?