我正在解析其中包含’
的RSS Feed。 SimpleXML将其转变为“。”。我该怎么做才能阻止这个?
回答一些问题 - 我正在使用CURL提取RSS源。如果我将其直接输出到浏览器,’
将显示为“预期的内容”。当我使用此方法创建新的SimpleXMLElement时(例如$xml = new SimpleXmlElement($raw_feed);
并转储$xml
变量),’
的每个实例都会被替换为“。
似乎SimpleXML在使用UTF-8&符编码字符时遇到问题。 (XML声明指定UTF-8。)
在CURL检索Feed之后,我确实可以控制Feed,然后才能用它来构建SimpleXML元素。
答案 0 :(得分:2)
’
表示以UTF-8中的0xE28099编码的Unicode字符’
(U + 2019)。当用Windows-1252解释该字节序列时,它表示字符â
(0xE2),€
(0x80)和™
(0x99)。
这意味着SimpleXML将输入处理为UTF-8编码,但您将其输出解释为Windows-1252。除非你真的想使用Windows-1252,否则你可能只是缺少specify the character encoding of your output properly。
答案 1 :(得分:0)
归结为必须在四个地方将默认编码设置为UTF-8:
setlocale(LC_ALL, 'en_US.UTF8');
utf8_encode($string);
mysqli_set_charset($database_insert_connection, 'utf8');
utf8_general_ci
如果输出到浏览器,请设置相应的标题(例如header ('Content-type: text/html; charset=utf-8');
)
希望这可以帮助将来的某个人!