首先二维码我是用libqrencode生成的。出问题的地方就在于用于生成二维码的字符串带有中文。
之后我用ZBar去扫描解析,解析的结果为乱码。
=================
解决方案:
因为字符串中含有中文,所以一定要考虑字符串的编码问题,考虑到ZBar支持UTF-8
正确的解决方法就是,用于生成二维码的字符串进行UTF-8编码,ZBar扫描出来的字符串是经过UTF-8 编码的,然后再对其进行解码。
伪代码如下:
对生成二维码的字符串进行编码:
NSString *content = [NSString stringWithFormat:@"reapal-%@-%@", [self hanleProductName:productName],productPrice];
content = [content stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
ZBar扫描的结果进行处理:
NSString *urlStr = symbol.data;
NSString* decodeStr = [urlStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
最后的总结:
二维码用什么编码格式生成,就用什么编码格式解析。