首先二維碼我是用libqrencode生成的。出問題的地方就在于用于生成二維碼的字符串帶有中文。
之后我用ZBar去掃描解析,解析的結(jié)果為亂碼。
=================
解決方案:
因?yàn)樽址泻兄形?,所以一定要考慮字符串的編碼問題,考慮到ZBar支持UTF-8
正確的解決方法就是,用于生成二維碼的字符串進(jìn)行UTF-8編碼,ZBar掃描出來的字符串是經(jīng)過UTF-8 編碼的,然后再對(duì)其進(jìn)行解碼。
偽代碼如下:
對(duì)生成二維碼的字符串進(jìn)行編碼:
NSString *content = [NSString stringWithFormat:@"reapal-%@-%@", [self hanleProductName:productName],productPrice];
content = [content stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
ZBar掃描的結(jié)果進(jìn)行處理:
NSString *urlStr = symbol.data;
NSString* decodeStr = [urlStr stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
最后的總結(jié):
二維碼用什么編碼格式生成,就用什么編碼格式解析。