请先看下面的代码
var_dump(rtrim ) (互联网产品、) )
我们以为能得到结果“互联网产品”,但实际得到的是“互联网生产”
为什么呢? 其实这是编码引起的问题。
rtrim () ) )。
此函数在处理字符时按照ascii代码进行处理。 我们先来看看“互联网产品,”
的代码:
$str='互联网产品,';
for($I=0; $Istrlen($str; $i ) {
Echodecbin(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码为“1110010010011 100000001”,中文符号“,”的utf-8码为“111000110000000010000001”
所以rtrim () )。
在处理时将“品”截断到最后的字节,留下“11100101 10010011”,引起乱码问题。