PHP utf8_encode()将空格转换为不间断的空格

时间:2011-08-16 21:23:15

标签: php unicode utf-8

非常简单:utf8_encode($ string)用不间断的空格(“\ u00a0”)替换常规空格。我尝试使用str_replace:

过滤结果
str_replace("\u00a0", " ", utf8_encode($string))

但这并没有解决它。

编辑:叹了口气,我是个白痴。这也不是utf8_encode()的问题。我以为我正在使用该功能,忘了我在我的代码中禁用了它。我的数据正在通过json_encode()运行以获取AJAX请求。这是json_encode()的问题吗?我担心我可能会滥用Stack Overflow。我会尝试用谷歌搜索它。

最终编辑:问题在于数据本身,它是从Word文档复制到MySQL表中的。所有空格都被复制为不间断空格。很抱歉浪费每个人的时间。

3 个答案:

答案 0 :(得分:12)

  

str_replace(“\ u00a0”,“”,utf8_encode($ dat))。但这并没有解决它。

PHP只有字节字符串,而不是本机Unicode字符串;因此没有\u转义,你在字面上要求它在输入中转换反斜杠字母-u序列。

要摆脱不间断的空格字符,您必须将\xA0替换掉(如果在传递给utf8_encode之前通过ISO-8859-1数据完成),或{{ 1}}(如果在转码为UTF-8后完成)。

\xC2\xA0只将ISO-8859-1转码为UTF-8,它不会触及空格,所以我怀疑你的实际数据中是否有不间断的空格字符。

答案 1 :(得分:0)

试试这个

$str = trim($str, chr(0xC2).chr(0xA0))

答案 2 :(得分:-1)

json_decode错误,导致不间断空格(\ xc2 \ xa0)

在json_decoding之前,请执行此操作...

     $data = str_replace("\xc2\xa0",'',$data)
     $json = json_decode($data);