特殊字符的PHP编码iso-8859-1


PHP Encoding of Special Characters iso-8859-1

我的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 = '&quot;hello dude&quot;';
$decodechars = htmlspecialchars_decode($string);
echo $decodechars; // output : "hello dude"