一个GBK编码导致的问题(转)

昨天听镇方分享店铺内的架构,提到一个有趣的问题, 由于中文都采用GBK编码,所以在搜索(使用strstr搜索子串)时会出现一些错误的匹配,高亮要在字符串中插入一些标记,这个时候会导致前端显示乱码。

“夏新”的GBk编码是”0xcf 0xc4 0xd0 0xc2″,”男”的GBK编码是”0xc4 0xd0″,刚好匹配上了中间两个字节,如果”夏新”后面还有汉字的话,这些字就要悲剧了。如果使用UTF-8编码就不会有问题了,因为中文使用UTF-8编码需要三个字节(1110xxxx 10xxxxxx 10xxxxxx),而第一个字节会是’E',后续两个字节都是10开始的,最大也就是’B',这样就不会有错误匹配的问题。

早期由于带宽和存储设备的限制,导致很多网站都用GBK编码,从此便踏上了不归路。Linux对UTF-8编码支持非常好,现在每天都要频繁去切换编码,在screen里面遇到乱码真是麻烦,窗口直接卡死,有时候过一段时间便能恢复,有时候只能将窗口kill掉。Hadoop对GBK编码支持也不好,写MR Job经常需要将编码先转成UTF-8,任务运行结束时,最后再转成GBK编码输出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值