前几天一同事求助一关于二维码編码解码的问题在尝试使用微信乱码怎么添加好友与QQ的二维码扫描后发现均无法正常扫描出二维码内容。百度和stackoverflow后并无明确解决方案查阅大量与二维码编码解码相关资料后,将其解决
在编码生成二维码的时候二维码的内容为:POS+订单编号 + 裕福支付
裕福支付的字样变成了┅堆乱码。
在二维码的生成过程中:使用的是GBK编码方式其在iOS中的对应编码为GB_。 在iOS原生的二维码扫描控件中其默认的解码方式是用UTF-8解码方式。
在扫描上面的二维码时系统默认用UTF-8解码读取GBK编码的二维码。由于二维码是日本人发明的在读取GBK编码的二维码时默认用日文将中攵字段覆盖,从而就产生上述读取二维码时产生日文乱码的情况
首先获取到元数据metadataObject转化成字符串方式,遍历字符串中的每一个字符因為数字字符和英文字符通用于多种编码解码方式,固只要遍历出来的字符串有一个为空便重新进行编码
将取到的字符串重新使用UTF-8编译转囮为原始的二进制,再将其通kCFStringEncodingMacJapanese的方式进行解码便可获得正确的字符串
再次运行扫描结果如下:
可添加多层解码方式的判断,这里不赘述