我的PHP脚本解析一个网站,并提取出一个HTMLdiv,它看起来像这样(并将其保存为字符串)
<div id="merchantinfo">The following merchants: Nautica®, Brookstone®, Teds® ©2012 Blabla</div>
我将其存储为$merchantList(字符串)。
然而,当我将数据输出到网页时
echo $merchantList
编码混乱,显示为:
Nautica®, Brookstone®, Teds® ©2012 Blabla
我尝试将以下内容添加到显示页面:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
</head>
但这并没有起到任何作用--感谢
编辑::---------------
对于这个问题,公认的答案是正确的。
但我意识到我的实际问题略有不同。
使用DOMDocument::loadHTML的初始解析已经破坏了UTF-8编码,导致字符串保存为
<div id="merchantinfo">The following merchants: Nauticaî, Brookstoneî, Tedsî ©2012 Blabla</div>
解决方法:
$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
$dom->loadHTML($html);
使用:
ini_set('default_charset', 'UTF-8');
不要使用iso-8859-1。使用UTF-8。
从您发布的mojibake中,输入字符串是utf-8,而不是iso-8859-1。
您只需要使用htmlspecialchars_decode函数,例如:
$string = '"hello dude"';
$decodechars = htmlspecialchars_decode($string);
echo $decodechars; // output : "hello dude"