【问题标题】:Are there illegal characters for creating QRCode with ZXing?用ZXing创建二维码是否有非法字符?
【发布时间】:2012-11-07 09:07:32
【问题描述】:

我尝试使用 ZXing 创建一个二维码生成器。我想在二维码中编码一个 mecode 对象:http://www.nttdocomo.co.jp/english/service/developer/make/content/barcode/function/application/addressbook/index.html

我有这个代码

        bitMatrix = writer.encode(mecard, BarcodeFormat.QR_CODE, 300, 300);
        BufferedImage img = MatrixToImageWriter.toBufferedImage(bitMatrix);

        ByteArrayOutputStream os = new ByteArrayOutputStream();
        OutputStream b64 = new Base64.OutputStream(os);
        ImageIO.write(img, "png", b64);
        String result = os.toString("UTF-8");

在创建文本和 url 时生成正确的输出。但是当我尝试编码"MECARD:N:Doe,John;TEL:(+32) 472 65 58 20;TEL:(+32) 2 577 50 68;EMAIL:John@iCompany.com;;" 它给出了一个无效的 Base64 字符串。是否有一些编码器无法处理的非法字符?

【问题讨论】:

  • 如果错误出现在 base 64 编码中,那么它发生在您将图像数据作为 Base 64 数据写入时(为什么?),这是在使用 zxing 之后,因此与它无关。为什么你认为它与编码数据有关?
  • 我确实发现了问题。但自己还不能回答。 MECARD 规范不允许使用多个 TEL 部分。

标签: java encoding base64


【解决方案1】:

问题出在 MECARD 规范中。 MECARD 只允许一个电话部分。我想用两个。就是这样

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多