PHP utf8_encode()将空格转换为不间断空格[关闭]

问题描述 投票:5回答:3
非常简单:utf8_encode($ string)用不间断空格(“ \ u00a0”)替换常规空格。我尝试使用str_replace过滤结果:

str_replace("\u00a0", " ", utf8_encode($string))

但是那不能解决。

编辑:igh,我是个白痴。 utf8_encode()也不是问题。我以为我在使用该功能,忘记了在代码中禁用它。我的数据正在通过json_encode()进行AJAX请求。 json_encode()有问题吗?我担心我可能会因为滥用堆栈溢出而感到内。我将尝试使用Google搜索。

最终编辑:数据本身存在问题,该数据已从Word文档复制到MySQL表中。所有空格都被复制为不间断空格。很抱歉浪费大家的时间。

php unicode utf-8
3个回答
12
投票
str_replace(“ \ u00a0”,“”,utf8_encode($ dat))。但这并不能解决问题。

PHP仅具有字节字符串,而没有本地Unicode字符串;因此,没有\u转义,而您实际上是在要求它转换输入中的反斜杠-u序列。

要摆脱不间断的空格字符,您必须替换掉\xA0(如果对传递给utf8_encode之前的ISO-8859-1数据进行了替换)或\xC2\xA0(如果在之后转码为UTF-8)。

[utf8_encode仅将ISO-8859-1转码为UTF-8,它不接触空格,所以我怀疑您的实际数据中有不间断的空格字符。


-1
投票
尝试此

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


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.