最近有个需求有到了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通过多字节字符串扩展处理中文查找、计算问题的更多相关文章

  1. 简单入门PHP中的多字节字符串操作

    什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起. 一个字符占几个字节并不是我们表面上看到的那样.正常情况下,一个数字或英文以及英文符号都是占用一个字节的. ...

  2. UNICODE字符串与多字节字符串的转换

    相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...

  3. PHP 多字节字符串 函数

    参考资料 多字节字符编码方案和他们相关的问题相当复杂,超越了本文档的范围. 关于这些话题的更多信息请参考以下 URL 和其他资源. Unicode materials » http://www.uni ...

  4. C# 删除字符串中的中文

    /// <summary> /// 删除字符串中的中文 /// </summary> public static string Delete中文(string str) { s ...

  5. 使用Java判断字符串中的中文字符数量

    Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...

  6. es3中使用es6/7的字符串扩展

    最近在看阮一峰的<ES6标准入门>,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法. repeat 将一个字符串重复n次 String.p ...

  7. ES6字符串扩展

    前面的话 字符串是编程中重要的数据类型,只有熟练掌握字符串操作才能更高效地开发程序.JS字符串的特性总是落后于其它语言,例如,直到 ES5 中字符串才获得了 trim() 方法.而 ES6 则继续添加 ...

  8. ES6中字符串扩展

    ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ②  in ...

  9. es6基础(4)--字符串扩展

    //字符串扩展 { console.log('a','\u0061'); console.log('s','\u20BB7');//超过了0xffff console.log('s','\u{20BB ...

随机推荐

  1. 99: AGC-018C 堆+思维

    $des$有 $X + Y + Z$ 个人,第 $i$ 个人有 $A_i$ 个金币,$B_i$ 个银币,$C_i$ 个铜币.选出 $X$ 个人获得其金币,选出 $Y$ 个人获得其银币,选出 $Z$ 个 ...

  2. AtCoder Grand Contest 004题解

    传送门 \(A\) 咕咕 int a,b,c; int main(){ scanf("%d%d%d",&a,&b,&c); if((a&1^1)|( ...

  3. Pytest权威教程01-安装及入门

    目录 安装及入门 安装 Pytest 创建你的第一个测试用例 执行多条测试用例 断言抛出了指定异常 使用类组织多条测试用例 函数测试中请求使用独立的临时目录 进一步阅读 返回: Pytest权威教程 ...

  4. java使用freemark生成word/pdf

    目录 一. 背景 二.实现的技术选型以及遇到的坑 三.最终的效果 2.1 .doc word效果展示 2.1 .docx word效果展示 2.2 docx word转pdf效果展示 三.准备工作及代 ...

  5. [Shell]Telnet反弹shell

    原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...

  6. Struts动态结果集,了解一些就好

    Struts动态结果集dynamic_result    在struts配置文件中${成员变量}(不是EL表达式,是ognl表达式)符号可以从value stack(即值栈)中取值,可以在action ...

  7. html5中section元素详解

    html5中section元素详解 一.总结 一句话总结: section元素 用来定义文章中的章节(通常应该有标题和段落内容) section元素的作用就是给内容分段,给页面分区 1.section ...

  8. 和重复搭建开发环境说 Bye Bye 之Vagrant

    每每新同事入职,都要在自己电脑上配置一堆环境,费神费力:每每开发测试都要重新配置开发环境,手工搭建,步骤很繁琐,极易出错. 大神在时,大神搭建,大神不在,以手抚膺坐长叹.为此,VVVVVagrant横 ...

  9. Mono Features of cheat engine

    If you attach to a process/game that uses mono, you should see a new "Mono" menu item on t ...

  10. 程序员体验AI换脸就不要用ZAO了,详解Github周冠军项目Faceswap的变脸攻略

    本文链接:https://blog.csdn.net/BEYONDMA/article/details/100594136       上个月笔者曾在<银行家杂志>发文传统银行如何引领开放 ...