我正在处理来自UTF8数据库的UTF8数据,而我遇到UTF8编码问题。
原始内容从数据库中正确提取,我在UTF8终端中看到“é”:
Site de la Préfecture de Police
然后,当我通过使用DOM操作的PHP函数传递此内容时,我看到:
Site de la Préfecture de Police
我们可以看到DOM读取了`é`代替'é`并用HTML实体é
替换`é`。
之后,我再次通过DOM函数,我得到另一个奇怪的转换:
{ {2}}现在它看起来像é
的十六进制编码:%C3 %A9
你知道发生了什么吗?
答案 0 :(得分:3)
尝试使用charset:iso-8859-1而不是UTF-8 或者一定要在你的html标题中设置charset:
PHP : header('Content-type: text/html; charset=utf-8');
HTML: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
答案 1 :(得分:3)
好的,找到了!
涉及问题的两个PHP函数:
html_entity_decode
正在使用ISO-8859-1 $dom->loadHTML($xml)
正在使用ASCII 我通过设置所需的字符集来修复:
html_entity_decode( $newContent, ENT_NOQUOTES, 'UTF-8' );
$dom->loadHTML('<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body>' . $xml . '</body></html>');