Php simplexml\u加载\u字符串奇怪字符

Php simplexml\u加载\u字符串奇怪字符,php,Php,我在使用simplexml\u load\u字符串处理非标准字符时遇到困难 我已经使用file\u get\u内容加载了一个报纸xml提要。如果我打印以筛选内容,我会得到其中一篇文章的标题,如下所示: <title>&#8216;If Legault were running in Alberta, he&#8217;d be more popular&#8217;: How right-wing is the CAQ?</title> 并打印$

我在使用simplexml\u load\u字符串处理非标准字符时遇到困难

我已经使用file\u get\u内容加载了一个报纸xml提要。如果我打印以筛选内容,我会得到其中一篇文章的标题,如下所示:

<title>&#8216;If Legault were running in Alberta, he&#8217;d be more popular&#8217;: How right-wing is the CAQ?</title>
并打印$feed的结果,标题已更改为:

[title] => �If Legault were running in Alberta, he�d be more popular�: How right-wing is the CAQ?

关于如何停止这样显示这些字符有什么建议吗?

这看起来SimpleXML正在创建一个UTF-8字符串,然后以ISO-8859-1(拉丁语-1)或类似CP-1252的格式呈现

将结果保存到文件并通过web服务器提供该文件时,浏览器将使用文件中声明的编码

包括在网页中 由于您的网页编码不是UTF-8,因此需要将字符串转换为您正在使用的任何编码,例如ISO-8859-1(拉丁语-1)

这可以通过iconv()轻松完成:

保存到数据库 数据库列未使用UTF-8排序规则,因此应使用iconv将字符串转换为数据库使用的字符集

假设您的数据库排序规则与您在中呈现的编码相同,则从数据库中读取时无需执行任何操作

解释 在UTF-8中,0xc2前缀字节用于访问“Latin-1增补”块的上半部分,该块包括重音字母、货币符号、分数、上标2和3、版权和注册商标符号以及非中断空格等字符


然而,在ISO-8859-1中,字节0xC2表示一个。因此,当您的UTF-8字符串被误解为其中之一时,后面会跟着一些其他无意义字符。

这是一个字符集问题。它需要是utf8,您可以对内容运行utf8_解码,但最好通过将输入(提要)中的字符集匹配到输出(我猜是html页面)来解决此问题

[title] => �If Legault were running in Alberta, he�d be more popular�: How right-wing is the CAQ?
$xmlout = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $xmlout);