当我使用度(°)符号时,为什么DomDocument会在此前添加此字符(Â)?

时间:2016-04-05 21:22:15

标签: php encoding utf-8

我有一段代码可以解析网页上的一些内容,但我无法弄清楚为什么它会在度数符号前面插入Â

我已经在php解释器中复制了我在应用程序中看到的内容:

$ php -a
php > $dom=new domDocument;
php > $dom->loadHTML("<ol><li>What if I use a ° symbol here...</li></ol>");
php > $xpath = new DOMXpath($dom);                                                                                                                                                    
php > $steps = $xpath->query("//li");
php > foreach($steps as $step) { echo $step->nodeValue; }
What if I use a ° symbol here...

2 个答案:

答案 0 :(得分:1)

问题是DOMDocument::loadHTML的默认编码是ISO-8859-1,而输入是UTF-8编码的字符串。您需要告诉DOMDocument您正在使用不同的字符集。

你可以用

做到这一点
$dom->loadHTML("<?xml encoding=\"utf-8\" ?><ol><li>What if I use a ° symbol here...</li></ol>");

答案 1 :(得分:0)

可能是编码问题? 通常,DomDocument使用UTF-8。

但浏览器在显示页面时往往会使用不同的编码。要强制使用UTF-8编码,您可以添加类似

的标记

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" > 到你的头元素