【问题标题】:PHP outputs a normal question mark instead of ‘ or ’PHP 输出一个普通的问号而不是‘或’
【发布时间】:2009-09-25 09:38:29
【问题描述】:

我目前正在解析 RSS 提要并在描述字段中对 html 进行子解析,以创建自定义 XML 结构。

在描述字段中有‘和’符号,PHP 将它们输出为常规问号。怎么会?

我尝试了不同的编码,如 UTF-8 和 iso-8859-1,但没有任何效果..

这是我正在解析的 xml http://www.ilovetechno.be/artists_rss.xml

这就是它应该被解析的方式http://www.crowdsurferapp.com/clients/ilovetechno/

【问题讨论】:

标签: php xml parsing encoding


【解决方案1】:

有一个predefined order in that the encoding of a XML document is to be determined

  1. HTTP header field Content-Type中的charset参数:

    内容类型:应用程序/xml; charset=
  2. XML declaration 中的encoding 属性:

    "?>

如果两者都缺失,则使用默认字符编码(UTF-8 或 UTF-16)。

因此,为了使用正确的编码解析 XML 文档,您需要查找这些信息。请查看问题PHP: Detect encoding and make everything UTF-8 以获得我的解决方案。

我还建议您使用 UTF-8 进行内部处理并作为输出编码,因为这是 XML 的默认字符编码之一。

【讨论】:

  • ……你错过了 3.:字节顺序标记。不过,不确定 2. 或 3. 是否具有优先权。
  • @Konrad Rudolph:你是对的。但我认为如果以上都不存在,则更习惯于在两种默认编码之间进行选择。
【解决方案2】:

您还必须在您的 html meta 标签和/或您的 http 标头中设置正确的编码

【讨论】:

  • 你的意思是这样的? header("Content-Type: application/xml; charset=iso-8859-1");
【解决方案3】:
<?xml version="1.0" encoding="iso-8859-1"?> 

更改为 utf-8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多