- 本文地址: https://www.yangdx.com/2021/01/178.html
- 转载请注明出处
PHP 中 mb_*
系列函数用于处理多字节字符串,平时比较常用就是字符串截取 mb_substr
,可以有效规避中文字符串截取的乱码问题。
mb_substr
的格式为:
mb_substr( string $str, int $start[, int $length = NULL[, string $encoding = mb_internal_encoding()]] ) : string
第4个参数 encoding
为字符编码。如果省略,则使用内部字符编码。
那么,这个“内部字符编码”是什么呢?我们可以通过函数 mb_internal_encoding
设置和获取:
<?php
/* 设置内部字符编码为 UTF-8 */
mb_internal_encoding("UTF-8");
/* 显示当前的内部字符编码*/
echo mb_internal_encoding();
?>
在 PHP5.6 之前的默认编码都是 ISO-8859-1,PHP5.6 之后的才是 UTF-8。
我公司老项目用 PHP5.4,新项目用 PHP7.2,这几天写老项目用 mb_substr
时习惯性的没有指定第4个参数,造成截取后的字符串末尾出现乱码,进而导致 json_encode
执行失败,找了好久才发现问题根源,真是个大坑啊!
不坑 不坑