码迷,mamicode.com
首页 > Web开发 > 详细

PHP mbstring通过多字节字符串扩展处理中文查找、计算问题

时间:2019-11-20 12:37:59      阅读:92      评论:0      收藏:0      [点我收藏+]

标签:需要   ati   遇到   字符集   The   处理   strpos   conf   strlen   

最近有个需求有到了mbstring相关的函数进行中文处理,如下:

  • mb_strpos
  • mb_strlen

过程中遇到一点比较奇怪的问题,及在本地环境运行没有问题

但我们生产环境是2台服务器,其中一台正确,另外一台返回的数值不正确

表现为一个中文按照3个字节进行了计算,本意应该为1个

网上找了半天说需要转换,如以下文章:https://www.awaimai.com/2605.html   实则没有半点效果

最后google上查找资料,排查服务器发现,服务器一台为PHP5.4,一台为PHP5.6

于是在本地切换至5.4发现有同样的问题。

PHP文档说明中,字符集从5.4开始默认为UTF-8,但实际用于中发现,用于Mbstring相关函数的时候字符集为:ISO-8859-1

联想可能是由此导致,最后解决方案如下:

1.修改 php.ini 中的 mbstring.internal_encoding 参数为 UTF-8,并重启服务

2.在编码时,采用 mb_internal_encoding("UTF-8"); 设置字符集

以上两种方法皆可

 

参考资料

https://www.php.net/manual/zh/mbstring.configuration.php#ini.mbstring.internal-encoding

https://betakuang.me/php-the-right-way/

 

作者:旧旧的 <393210556@qq.com> 解决问题的方式,就是解决它一次

PHP mbstring通过多字节字符串扩展处理中文查找、计算问题

标签:需要   ati   遇到   字符集   The   处理   strpos   conf   strlen   

原文地址:https://www.cnblogs.com/widgetbox/p/11896709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!