php 使用 substr 截取中文字符串出现乱码
因为 substr()
针对的是英文字符串,中文字符串需要用 mb_substr()
。
为什么使用了 mb_substr()
之后依然出现乱码呢?
这与 mb_substr("为中华之崛起而读书",0, 6, "utf-8")
中的第一个参数和第四个参数有关。参考 php 判断字符串长度 strlen() 与 mb_strlen() 函数用法与不同环境下的测试,在 PHP 低版本(5.2)环境下执行 PHP 脚本时(非交互环境),当脚本格式为 utf-8(即第一个参数编码格式为 utf-8),mb_* 函数第四个参数为 utf-8 时,返回结果是可信的。PHP 高版本结果本身就是可信的,不需要额外配置第四个参数(字符串编码非 utf-8 的情况除外)。