四 07
数据库中有一个“—”符号,PHP直接echo出来是这个东西。生成DOM文档树后输出,该字符被编码为“—”
echo $dom->saveHTML();
从输出看,默认编码是ASCII,而且没有改变编码的选项。它把每个汉字(双字节字符)编码成加上一个5位十进制数再加上一个分号。这棵树成功地生成后,输出到页面,javascript使用ActiveXObject(IE)、parseFromString(FF)均不能解析该字符,并导致文档树生成失败。后在PHP输出时,写作
echo str_replace(“—”,”—”,$dom->saveHTML());
从流程上说,是让PHP帮助页面做了初步解码。
后记:找到一个一揽子解决办法,请注意上文提到的ASCII编码对PHP来说是HTML-ENTITIES。用它把HTML-ENTITIES翻译成UTF-8,这样输出的XML文档就直接都是汉字,可以被js正确地解析了
echo mb_convert_encoding($dom->saveHTML(),”UTF-8″,”HTML-ENTITIES”);
近期评论