PHP';s SimpleXML不处理&#8217 ; 适当地
我正在解析一个RSS提要,它有一个PHP';s SimpleXML不处理&#8217 ; 适当地,php,xml,rss,simplexml,Php,Xml,Rss,Simplexml,我正在解析一个RSS提要,它有一个’在其中。SimpleXML将此转换为™. 我能做些什么来阻止这一切 为了回答出现的一些问题,我正在使用CURL拉一个RSS提要。如果我将其直接输出到浏览器,’显示为“这是预期的”。当我使用此函数创建一个新的SimpleXMLElement时,(例如,$xml=newSimpleXmlElement($raw_feed)并转储$xml变量,&的每个实例都被替换为“-”™. SimpleXML似乎在使用UTF-8和编码字符时遇到问题。(XML声
’代码>在其中。SimpleXML将此转换为™. 我能做些什么来阻止这一切
为了回答出现的一些问题,我正在使用CURL拉一个RSS提要。如果我将其直接输出到浏览器,’代码>显示为“这是预期的”。当我使用此函数创建一个新的SimpleXMLElement时,(例如,$xml=newSimpleXmlElement($raw_feed)
并转储$xml
变量,&
的每个实例都被替换为“-”™.
SimpleXML似乎在使用UTF-8和编码字符时遇到问题。(XML声明指定UTF-8。)
CURL在构建SimpleXML元素之前检索到提要之后,我确实可以控制提要。&
表示Unicode字符”
(U+2019),该字符在UTF-8中用0xE28099编码。当该字节序列被解释为时,它表示字符,
(0xE2),€
(0x80)和™代码>(0x99)
这意味着SimpleXML将输入处理为UTF-8编码,但您将其输出解释为Windows-1252。除非您真的想使用Windows-1252,否则您可能只是错过了。归结起来,必须在四个位置将默认编码设置为UTF-8:
文件开头的默认区域设置:setlocale(LC_ALL,'en_US.UTF8');
对CURL产生的字符串进行编码:utf8\u encode($string);
默认情况下,将MySQL连接设置为使用UTF-8:mysqli\u set\u字符集($database\u insert\u connection,'utf8');
在MySQL数据库中将适当的排序规则设置为utf8\u general\u ci
如果输出到浏览器,则设置适当的标题(例如标题('Content-type:text/html;charset=utf-8');
)
希望这对将来的人有所帮助!解析后,您将如何处理这些值?保存到DB或在浏览器上显示这些值?您希望这些值是什么样子?&8217;或’右单引号“您对RSS有控制权吗?可能包括您的代码吗?