我正在从rss xml中抓取rss提要数据。有些字符串中有引号。在将字符串粘贴到数据库中之前,我将通过htmlenties()运行这些字符串。然后,当我试图在浏览器中显示相同的信息时,引号会显示为"â??"。字符存储为数据库中的"â;?s"(无空格)
我的页面的标题
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
我确信其他实体没有正确显示。我该如何纠正这一点?
一个引用了"Agawi"的示例提要:http://feeds.feedburner.com/TechCrunch/gaming
如果使用PHP,这个例程可能很有用。
它在标准的get_html_translation_table()中添加了M$Word通常替换为键入文本的字符代码
否则,这些字符将永远不会在html输出中正确显示,这将是您的麻烦。
function get_html_translation_table_CP1252() {
$trans = get_html_translation_table(HTML_ENTITIES);
$trans[chr(130)] = '‚'; // Single Low-9 Quotation Mark
$trans[chr(131)] = 'ƒ'; // Latin Small Letter F With Hook
$trans[chr(132)] = '„'; // Double Low-9 Quotation Mark
$trans[chr(133)] = '…'; // Horizontal Ellipsis
$trans[chr(134)] = '†'; // Dagger
$trans[chr(135)] = '‡'; // Double Dagger
$trans[chr(136)] = 'ˆ'; // Modifier Letter Circumflex Accent
$trans[chr(137)] = '‰'; // Per Mille Sign
$trans[chr(138)] = 'Š'; // Latin Capital Letter S With Caron
$trans[chr(139)] = '‹'; // Single Left-Pointing Angle Quotation Mark
$trans[chr(140)] = 'Œ '; // Latin Capital Ligature OE
$trans[chr(145)] = '‘'; // Left Single Quotation Mark
$trans[chr(146)] = '’'; // Right Single Quotation Mark
$trans[chr(147)] = '“'; // Left Double Quotation Mark
$trans[chr(148)] = '”'; // Right Double Quotation Mark
$trans[chr(149)] = '•'; // Bullet
$trans[chr(150)] = '–'; // En Dash
$trans[chr(151)] = '—'; // Em Dash
$trans[chr(152)] = '˜'; // Small Tilde
$trans[chr(153)] = '™'; // Trade Mark Sign
$trans[chr(154)] = 'š'; // Latin Small Letter S With Caron
$trans[chr(155)] = '›'; // Single Right-Pointing Angle Quotation Mark
$trans[chr(156)] = 'œ'; // Latin Small Ligature OE
$trans[chr(159)] = 'Ÿ'; // Latin Capital Letter Y With Diaeresis
ksort($trans);
return $trans;
}
$trans = get_html_translation_table_CP1252();
$feed = strtr($feed, $trans);
是的,因为这些不是常规引号“
”
,更像Microsoft Word
引号。您应该以feedburner
为例,手动将它们转换为“
和”
。
例如
$feed = str_replace('“', '“', $feed);
$feed = str_replace('”', '”', $feed);