PHP文档、Unicode问题
我这里有些问题PHP文档、Unicode问题,php,character-encoding,domdocument,Php,Character Encoding,Domdocument,我这里有些问题 $source = "<html><body><h1>“</h1></body></html>"; $dom = new DOMDocument(); $dom->loadHTML($source); echo $dom->saveHTML(); $source=““;”; $dom=新的DOMDocument(); $dom->loadHTML($source);
$source = "<html><body><h1>“</h1></body></html>";
$dom = new DOMDocument();
$dom->loadHTML($source);
echo $dom->saveHTML();
$source=““;”;
$dom=新的DOMDocument();
$dom->loadHTML($source);
echo$dom->saveHTML();
输出:
&ldquo
好的,这是正确的。
但是如果我想像这样提取节点
$source = "<html><body><h1>“</h1></body></html>";
$dom = new DOMDocument();
$dom->loadHTML($source);
$h1 = $dom->getElementsByTagName('h1');
echo $dom->saveHTML($h1->item(0));
$source=““;”;
$dom=新的DOMDocument();
$dom->loadHTML($source);
$h1=$dom->getElementsByTagName('h1');
echo$dom->saveHTML($h1->item(0));
它会输出无法识别的文本
œ
有人知道如何解决这个问题吗?您需要domdocument构造函数(checkout)的第二个参数:
您的代码示例适用于我,输出为
“
那么,您在哪里查看该输出
可能在windows上的浏览器中?如果在浏览器中,是否尝试添加
header('Content-Type: text/html; charset=utf-8');
在你的剧本之上
另请参见:和。所有这些DOM函数都返回UTF-8编码的字符串,最好查看手册。除了正确显示之外,没有什么需要解决的问题,例如,通过正确配置响应标题或使用浏览器中的菜单告知浏览器,如果您不知道如何告知浏览器,您可以在其中指定字符集编码ser自动。请查看我用来加载已编码的HTML源代码&8220;。当$dom->saveHTML()时,它会正确输出,但如果我打印选定的节点,$dom->saveHTML($nodes),它会输出到未知的unicode;这可能是
$node
参数的缺陷(当saveHTML
w/o$node
不使用实体时,不使用实体)。
“ <ENTITY TYPE="#8220"/> “ Left double quotation mark
0xE2 (226) 0x80 (128) 0x9C (156)
| | `------ Windows-1252: œ
| `--- most Windows 125x encodings: €
`--- ISO 8859-1, 2, 3, 4, 9, 10, 14, 15, 16: â
header('Content-Type: text/html; charset=utf-8');