非常简单:utf8_encode($ string)用不间断的空格(“\ u00a0”)替换常规空格。我尝试使用str_replace:
过滤结果str_replace("\u00a0", " ", utf8_encode($string))
但这并没有解决它。
编辑:叹了口气,我是个白痴。这也不是utf8_encode()的问题。我以为我正在使用该功能,忘了我在我的代码中禁用了它。我的数据正在通过json_encode()运行以获取AJAX请求。这是json_encode()的问题吗?我担心我可能会滥用Stack Overflow。我会尝试用谷歌搜索它。最终编辑:问题在于数据本身,它是从Word文档复制到MySQL表中的。所有空格都被复制为不间断空格。很抱歉浪费每个人的时间。
答案 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_decoding之前,请执行此操作...
$data = str_replace("\xc2\xa0",'',$data)
$json = json_decode($data);