非常简单:utf8_encode($ string)用不间断的空格("\ u00a0")替换常规空格.我尝试用str_replace过滤结果:
str_replace("\u00a0", " ", utf8_encode($string))
Run Code Online (Sandbox Code Playgroud)
但这并没有解决它.
编辑:叹了口气,我是个白痴.这也不是utf8_encode()的问题.我以为我正在使用该功能,忘了我在我的代码中禁用了它.我的数据正在通过json_encode()运行以获取AJAX请求.这是json_encode()的问题吗?我担心我可能会滥用Stack Overflow.我会尝试谷歌搜索它.
最终编辑:问题在于数据本身,它是从Word文档复制到MySQL表中的.所有空格都被复制为不间断空格.很抱歉浪费每个人的时间.
bob*_*nce 12
str_replace("\ u00a0","",utf8_encode($ dat)).但这并没有解决它.
PHP只有字节字符串,而不是本机Unicode字符串; 因此没有\u逃脱,你在字面上要求它在输入中转换反斜杠字母-u序列.
要摆脱不间断的空格字符,您必须更换\xA0(如果通过ISO-8859-1数据,您可能在传递之前已经完成utf8_encode),或者\xC2\xA0(如果在转码为UTF-8后完成).
utf8_encode 只将ISO-8859-1转码为UTF-8,它不会触及空格,所以我怀疑你的实际数据中有不间断的空格字符.