关于php一些生僻字转编码问题

最近遇到了一些转码问题:

iconv('shift-jis', 'utf-8//IGNORE', $data) 竟然还会报错,不是说加入了//IGNORE 就忽略错误了啊? 

错误信息如下:

ErrorException: iconv(): Detected an incomplete multibyte character in input string in

调查了半天没什么头绪,由于代码最终是要在linux下运行的,随即想到了可以使用

iconv('sjis-win', 'utf-8//IGNORE', $data),
这代码在windows下报错:
ErrorException: iconv(): Wrong charset, conversion from `SJIS-win' to `utf-8//IGNORE' is not allowed in 。 不过还好在linux没什么问题,进入可以转码成功。

这两天客户又在问,这个方法是不是100%保险,会不会还有其他生僻字会报错,汗颜。。。。。

无奈继续调查,翻阅资料,发现又这么一个函数:

mb_convert_encoding,

然后还可以加入参数:

mb_convert_encoding ($data[$i], 'utf-8', 'auto'),但是代码一跑还是爆了。

原来这个'auto' 只是包括了 如下编码:/* "auto" is expanded to "ASCII,JIS,UTF-8,EUC-JP,SJIS" */

然后忽然想到了这么一个方法:mb_convert_encoding ($data[$i], 'utf-8', 'JIS, eucjp-win, sjis-win,shift-jis,utf-8')  我是不是可以把所有的编码放进去,这样就永远不会报错了啊。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值