解析时作为 â 出现的字符(弯引号、破折号等)XML
Characters (curved quotes, dash, etc.) coming as â on parsing XML
我正在尝试解析 Guardian RSS 提要 (Link)。提要包含弯引号 (” ’ “ ‘)、破折号 (-) 和带重音符号的字符 (Orbán)。
当我在 HTML 页面上解析和显示文本时,这些字符在 'description' 部分中显示为 â(用于引号和短划线)、¡(用于 á)等.我如何让它们正确解析?
代码
$xml = simplexml_load_file($link);
for($i = 0; $i < 30; $i++){
$title = $xml->channel->item[$i]->title;
$description = $xml->channel->item[$i]->description;
$count = 0;
$para = "";
$doc = new DOMDocument();
@$doc->loadHTML($description);
while($count<3){
if($count==0){
$para = $doc->getElementsByTagName('p')->item($count)->nodeValue;
}else{
$para = $para."<br><br>".$doc->getElementsByTagName('p')->item($count)->nodeValue;
}
$count++;
}
echo "<tr>";
echo "<td>" . $title . "</td>";
echo "<td>" . $para . "</td>";
echo "</tr>";
}
我的 'head' 部分有以下行。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
标题部分显示正确。这可能是因为他们在标题中使用直引号 ('),在描述中使用弯引号 (')。但正如您所见,á 也在标题中正确显示。
问题出在 loadHTML 行。除非指定,否则它不会将文本视为 UTF-8。
我替换了这一行
@$doc->loadHTML($description);
用这条线
@$doc->loadHTML('<?xml encoding="utf-8" ?>'.$description);
Check the original answer here.
我正在尝试解析 Guardian RSS 提要 (Link)。提要包含弯引号 (” ’ “ ‘)、破折号 (-) 和带重音符号的字符 (Orbán)。
当我在 HTML 页面上解析和显示文本时,这些字符在 'description' 部分中显示为 â(用于引号和短划线)、¡(用于 á)等.我如何让它们正确解析?
代码
$xml = simplexml_load_file($link);
for($i = 0; $i < 30; $i++){
$title = $xml->channel->item[$i]->title;
$description = $xml->channel->item[$i]->description;
$count = 0;
$para = "";
$doc = new DOMDocument();
@$doc->loadHTML($description);
while($count<3){
if($count==0){
$para = $doc->getElementsByTagName('p')->item($count)->nodeValue;
}else{
$para = $para."<br><br>".$doc->getElementsByTagName('p')->item($count)->nodeValue;
}
$count++;
}
echo "<tr>";
echo "<td>" . $title . "</td>";
echo "<td>" . $para . "</td>";
echo "</tr>";
}
我的 'head' 部分有以下行。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
标题部分显示正确。这可能是因为他们在标题中使用直引号 ('),在描述中使用弯引号 (')。但正如您所见,á 也在标题中正确显示。
问题出在 loadHTML 行。除非指定,否则它不会将文本视为 UTF-8。
我替换了这一行
@$doc->loadHTML($description);
用这条线
@$doc->loadHTML('<?xml encoding="utf-8" ?>'.$description);
Check the original answer here.