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

时间:2012-07-19 01:49:49

标签: php character-encoding

我的PHP脚本解析一个网站并提取一个看起来像这样的HTML DIV(并将其保存为字符串)

<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>

但那没有做任何事情。 --Thanks

编辑:: ------------

对于这个问题,接受的答案是正确的。

但我意识到我的实际问题略有不同。

使用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);

2 个答案:

答案 0 :(得分:2)

使用:

ini_set('default_charset', 'UTF-8');

不要使用iso-8859-1。使用UTF-8。

你发布的mojibake输入字符串是utf-8,而不是iso-8859-1。

答案 1 :(得分:0)

您只需要使用htmlspecialchars_decode函数,例如:

$string = '&quot;hello dude&quot;';
$decodechars = htmlspecialchars_decode($string);
echo $decodechars; // output : "hello dude"