当我尝试解析一些带有
的 html,然后 echo
它时,
“变成”这个字符: 。另外, html_entity_decode()
和 str_replace()
不会改变它。
为什么会发生这种情况?我怎样才能删除?
0xC2
和0xA0
。
当这些字节以 ISO-8859-1(单字节编码)而不是 UTF-8(多字节编码)表示时,这些字节分别变成字符
Â
和另一个不间断空格
。
显然您正在使用 UTF-8 解析 HTML 并使用 ISO-8859-1 回显结果。要解决此问题,您需要使用 ISO-8859-1 解析 HTML 或使用 UTF-8 回显结果。我建议始终使用 UTF-8。仔细阅读 PHP UTF-8 cheatsheet 将其全部对齐。 另请参阅:
$nbsp = html_entity_decode(" ");
$s = html_entity_decode("[ ]");
$s = str_replace($nbsp, " ", $s);
echo $s;
也许 \xa0 它不是一个有效的 unicode 字符串,因此使用 html_entity_decode() 的结果可能比 \xa0 更适合文本替换。
BalusC 的解释看起来似乎合理,您可能会尝试在 中插入 utf-8 \xc2\xa0 然后尝试将其显示为拉丁语而不是 utf8,如果您想使用 unicode 内容,您应该在字符集中到处保留 utf-8 编码服务器到数据库的连接,因为在使用例如时您会遇到同样的问题
à