从XML Feed返回的奇数字符

时间:2015-07-14 17:40:02

标签: php xml unicode character-encoding

我正在订阅XML Feed以填充网页中的某些数据。字符集中的字符集是UTF8,在实际页面的元标记中设置为UTF8。

但是,当我发布Feed数据时,会出现奇怪的字符,如:

’代替'

我意识到Feed可能正在使用非UTF8编码来处理文本。但是,我不知道如何确定 - 而我看到的下一个Feed可能还有不同的编码。

如何确保来自Feed的数据在存储到数据库之前被正确编码为UTF8?

由于

1 个答案:

答案 0 :(得分:1)

  

如何确保来自Feed的数据在存储到数据库之前被正确编码为UTF8?

将其写入文件并在Web浏览器中查看 - 或者直接在Web浏览器中查看源地址。如果您在网络浏览器中看到’,那么Feed就会被错误编码。

UTF-8中的字符(U + 2019右单引号)是字节序列0xE2,0x80,0x99,如果误解为Windows代码页1252则为{{1} }。原则上,为了扭转损害,您可以尝试将提取的文本编码为cp1252并将其重新解释为UTF-8:

’

这适用于iconv('utf-8', 'windows-1252', $dodgy_str) ,但如果UTF-8编码中的字节无法编码为cp1252,那么这些序列的原始内容将无法恢复。更好的方法是联系提供错误饲料的人,让他们解决问题。

另一方面,如果浏览器呈现正常,则问题在于解析XML或与数据库的连接。