var_dump(rtrim("互联网产品、", "、"));
我们以为会得到结果 "互联网产品", 但实际上获得的是 ""互联网产��"
rtrim() 这个函数在处理字符时是按照ascii编码来处理, 先看一下 "互联网产品、" 的编码:
$str = "互联网产品、";
for ($i = 0; $i < strlen($str); $i++) {
echo decbin(ord($str[$i])) . PHP_EOL;
}
/* Output
11100100
10111010
10010010
11101000
10000001
10010100
11100111
10111101
10010001
11100100
10111010
10100111
11100101
10010011
10000001
11100011
10000000
10000001
*/
可以看出中文"品"的utf-8编码是 "11100101 10010011 10000001", 而中文符号 "、" 的utf-8编码是 "11100011 10000000 10000001"
因此 rtrim() 在处理时会一并将 "品" 截掉最后一个字节, 剩下 "11100101 10010011", 从而引起乱码的问题.
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/7367/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料
查 看2022高级编程视频教程免费获取
