注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

水木的博客

唱好人生中的每一场戏

 
 
 

日志

 
 

IOS 解决zbar扫描二维码时出现中文乱码问题实例【转并加以完善】  

2013-10-22 08:56:58|  分类: Iphone&Ipad开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

/**

 * @brief 检查扫描结果里是否有中文,如果有则进行转码处理(只处理了gbk和utf-8类型的中文字符)

 *

 * @param text 扫描结果字符串

 *

 * @return 转码后的字符串

 */

-(NSString *)encodingScanResult:(NSString *)text

{

    NSString *tempStr;

    //M_Johnny20131021:修正扫描出来二维码里有中文时为乱码问题

    if ([text canBeConvertedToEncoding:NSShiftJISStringEncoding])

    {

        tempStr = [NSString stringWithCString:[text cStringUsingEncoding:NSShiftJISStringEncoding] encoding:NSUTF8StringEncoding];

        

        //如果转化成utf-8失败,再尝试转化为gbk

        if (tempStr == nil)

        {

            tempStr = [NSString stringWithCString:[text cStringUsingEncoding:NSShiftJISStringEncoding] encoding:CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000)];

        }

        

        //如果转化为utf-8gbk都失败,就显示原始扫描出来的字符串

        if (tempStr == nil)

        {

            tempStr = text;

        }

    }

    

    return tempStr;

}




本例中使用的二维码为utf-8类型的中文,另外代码还处理了gbk类型的中文扫描出来为乱码的问题

 作者:朱克锋

邮箱:zhukefeng@iboxpay.com

转载请注明出处:http://blog.csdn.net/linux_zkf

在使用zbar扫描二维码时有时候会出现中文乱码问题如下面的这个二维码,正常扫描应该是我的名字:朱克锋但是用zbar扫描的结果却是乱码,原因是zbar默认的字符不是utf-8类型


解决方法就是转码

关键代码:

  id<NSFastEnumeration> results =

    [info objectForKeyZBarReaderControllerResults];

    ZBarSymbol *symbol = nil;

    for(symbol in results) {

        // EXAMPLE: just grab the first barcode

        break;

    }

    //symbol.data;

    //处理部分中文乱码问题(encodingScanResult:方法用来处理扫描结果里有中文的情况)

    NSString *scanResultStr = [self encodingScanResult:symbol.data];




转自:http://blog.csdn.net/linux_zkf/article/details/7781899

分享到: 
  评论这张
 
阅读(1112)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017