PHP mbstring通过多字节字符串扩展处理中文查找、计算问题
最近有个需求有到了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通过多字节字符串扩展处理中文查找、计算问题的更多相关文章
- 简单入门PHP中的多字节字符串操作
什么是多字节的字符串操作呢?其实不少的同学可能都已经使用过了,但我们还是要从最基础的问题说起. 一个字符占几个字节并不是我们表面上看到的那样.正常情况下,一个数字或英文以及英文符号都是占用一个字节的. ...
- UNICODE字符串与多字节字符串的转换
相互转换的两个函数的声明: 1. 多字节字符串与宽字符串的转换 int MultiByteToWideChar( UINT CodePage, // code page,一般设为 CP_ACP DWO ...
- PHP 多字节字符串 函数
参考资料 多字节字符编码方案和他们相关的问题相当复杂,超越了本文档的范围. 关于这些话题的更多信息请参考以下 URL 和其他资源. Unicode materials » http://www.uni ...
- C# 删除字符串中的中文
/// <summary> /// 删除字符串中的中文 /// </summary> public static string Delete中文(string str) { s ...
- 使用Java判断字符串中的中文字符数量
Java判断一个字符串str中中文的个数,经过总结,有以下几种方法(全部经过验证),可根据其原理判断在何种情况下使用哪个方法: 1. char[] c = str.toCharArray(); for ...
- es3中使用es6/7的字符串扩展
最近在看阮一峰的<ES6标准入门>,在字符串扩展一节中有提到几个新的扩展,觉得挺有意思,想在ES3里面使用,于是就有下面的兼容性写法. repeat 将一个字符串重复n次 String.p ...
- ES6字符串扩展
前面的话 字符串是编程中重要的数据类型,只有熟练掌握字符串操作才能更高效地开发程序.JS字符串的特性总是落后于其它语言,例如,直到 ES5 中字符串才获得了 trim() 方法.而 ES6 则继续添加 ...
- ES6中字符串扩展
ES6中字符串扩展 ① for...of 遍历字符串: 例如: for(let codePoint of 'string'){ console.log(codePoint) } 运行结果: ② in ...
- es6基础(4)--字符串扩展
//字符串扩展 { console.log('a','\u0061'); console.log('s','\u20BB7');//超过了0xffff console.log('s','\u{20BB ...
随机推荐
- 99: AGC-018C 堆+思维
$des$有 $X + Y + Z$ 个人,第 $i$ 个人有 $A_i$ 个金币,$B_i$ 个银币,$C_i$ 个铜币.选出 $X$ 个人获得其金币,选出 $Y$ 个人获得其银币,选出 $Z$ 个 ...
- P4425 【[HNOI/AHOI2018]转盘】
颂魔眼中的一眼题我大湖南竟无一人\(AC\) 首先我们考虑一个性质:我们肯定存在一种最优解,满足从某个点出发,一直往前走,不停下来. 证明:我们假设存在一种最优解,是在\(t_i\)的时候到达\(a\ ...
- 2019acm山东省赛C题
传送门:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4115 昨天赛场上只想到了一种情况:最远点一定是在最后一次循环中产生 ...
- [java][JEECG] Maven settings.xml JEECG项目初始化 RouYi settings.xml配置
好吧一下是经验之谈,原本这些坑不应该躺的,从头看手册完全可以避免这些. 懒得整理了,看懂了就看,看不懂自己琢磨JEECG的帮助文档去,不过嘛我喜欢用Intelij IDEA,他里面都是别的IDE,不喜 ...
- luogu_P3313 [SDOI2014]旅行
传送门 Solution 第二次学习可持久化线段树 打了一道裸题来练习一下-- 对于每个宗教都可以开一个主席树 基础操作 树剖lca Code #include<bits/stdc++.h&g ...
- LocalStorage 的 具体操作 与 设置有效期
读取与存储 的使用方法 //存储 (名称 , 内容 , 有效期<小时> ) // 如果想要自己改变 有效期的单位 可以在 set 方法中 // 找到 这两个 setHours getHou ...
- Java IO管道流
import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; publi ...
- Python正则表达式【转载】
原作者:LouieZhang 原文出处:https://www.cnblogs.com/LouieZhang/p/7399836.html 0x00 简介 正则表达式就是描述字符串排列的一套规则.利用 ...
- [Shell]MySql慢查询日志GetShell
通过开启慢查询日志,配置可解析日志文件GETSHELL. MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句. long_query_time的默认值 ...
- IPV4 VS IPV6 谈谈省级ipv6的必要性
11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...