php rtrim() 格式化中文问题
先看以下代码
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", 从而引起乱码的问题.
相关推荐
Crazyshark 2020-11-13
缘起宇轩阁 2020-08-15
清风徐来水波不兴 2020-01-14
Nicolase 2019-11-06
左转有出口 2013-10-18
zhangkala 2018-08-05
yuwinter 2012-05-16
CCxiaotang 2009-11-26
zhangwei0php 2019-04-16
phptyong 2019-04-15
的砖栏 2019-04-11
phptyong 2019-04-11
phpyounger 2019-04-10
phpcrazy 2013-12-05