0

我已经在Android上完成了将文本编码为二维码的工作,解码部分也运行良好。而且只是为了好玩,我把汉字编码成二维码,安卓上的zxing可以很好的识别。但是,我尝试了zxing iPhone app,它无法解码中文(长时间没有结果,而Android代码只需1秒即可返回识别的文本)。我还没有查看 IOS 的 zxing sdk,只是好奇为什么同一家公司的应用程序在这两个平台上的行为会有所不同,我认为算法应该是相同的。谢谢!

4

2 回答 2

4

由于你不是中国人,但你发现了这个问题。你一定是一个好的测试人员。如您所知,zxing decode 与 iOS 和 Android 不同。可以说zixng iOS是zxing Android的子集(我认为)。如果要在zxing iOS 中支持中文,则必须改进c++ 端口中的StringUtils.cpp。添加这些代码可能会对您有所帮助。

if (length > 2) {
    for (int i = 0; i < length - 1; i++) {
        int value = bytes[i] & 0xFF;
        if (value > 0x7F) {
            if (value > 0xB0 && value <= 0xF7) {
                int value2 = bytes[i + 1] & 0xFF;
                if (value2 > 0xA0 && value2 <= 0xF7)
                    return GB2312;
            }
        }
    }
}
于 2012-10-26T03:09:48.730 回答
1

ZXing 不是一家公司,它是一个开源项目。

更重要的是,在这种情况下,从事 Java (Android) 和 C++ (iOS) 端口工作的人员重叠但并不相同。正如 ZXing 常见问题解答中提到的,这些端口是不等价的。

但是,Java 和 C++ 中的 QR 码支持非常小心地保持同步,因此结果应该不会有太大差异。您最好的选择是将导致问题的代码发布到 ZXing 邮件列表,以便人们有机会进行调查。

(FWIW,我是 C++/iOS ZXing 端口最常见的贡献者之一。)

于 2012-07-12T01:59:14.350 回答