使用 ZBar 扫描 QR 码时,该过程生成的字符串无法正确显示 unicode 字符。这个单词Márti通过任何免费使用的 QR 代码生成器(例如http://qrcode.kaywa.com)会导致Mテ。rti.
在其他问题中(1, 2)建议在结果字符串的开头嵌入 BOM,但这样做:
NSString *qrString = [NSString stringWithFormat:@"\xEF\xBB\xBF%@",symbol.data];
or this:
NSString *qrString = [[NSString alloc] initWithFormat:@"\357\273\277%@", symbol.data];
对亚洲角色造成了同样的、有缺陷的结果。symbol.data
是 ZBar 提供的结果 NSString。
更新:根据 dda 的回答,解决方案如下:
NSString *qrString = symbol.data;
//look for misinterpreted acute characters and convert them to UTF-8
if ([qrString canBeConvertedToEncoding:NSShiftJISStringEncoding]) {
qrString = [NSString stringWithCString:[symbol.data cStringUsingEncoding: NSShiftJISStringEncoding] encoding:NSUTF8StringEncoding];
}
根据关于 QR 的维基百科页面,二进制数据的编码 [Márti 将适用] 是 ISO 8859-1。这可能是编码为 unicode 编码的问题。但在那里看到汉字,问题可能是编码为 QR 编码的问题:也许文本不是 ASCII,默认编码为 Shift JIS X 0208(即汉字/假名)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)