PHP替換UTF-8的空格(0xC2 0xA0)
发表于:2024-02-18 14:32:40浏览:411次
收藏
在于UTF-8这种编码里面,存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候,表现为一个空格,和普通的半角空格“ ”(ASCII码:0x20)一样,唯一的不同是它的宽度不会被压缩,因此常常用于网页排版(如首行缩进)。
而GB2312、Unicode之类的编码并没有这个字符,因此UTF-8转码后,这个字符就会被替换成为问号。
使用UTF-8编码进行HTMLDecode的,对于语句开头的空格( ),就会被自动转换成为这个特殊字符(0xC2 0xA0),可能是判断为放在语句开头的空格就是用来排版的。
在转换为其他编码之前,这个特殊的空格受到的待遇与普通的半角空格是一致的,甚至也会被 trim()
去掉,但是如果夹杂在普通空格之间,有时候trim就去不掉它了。
言归正传,那怎么把这个空格字符去掉呢?
我们只需要使用PHP自带函数 chr()
,chr 是将ASCII码转换为字符的函数,如下:
$str=str_replace(chr(0xC2).chr(0xA0)," ",$str);
介个样纸,就万事大吉了。