【问题标题】:Character Encoding Issue while parsing XML in android在android中解析XML时出现字符编码问题
【发布时间】:2011-02-19 14:54:10
【问题描述】:

我正在尝试在 Android 中解析 XML 文件。它包含一个带有特殊字符的标签,例如

<subject><![CDATA[FÚTBOL]]></subject>

在尝试解析上述文本时,我收到一条异常消息,提示“XML 令牌格式不正确”。我正在使用 XMLPullParser,并且还使用

parser.setInput(this.getInputStream(),"iso-8859-1");

我在阅读“áñí”等其他字符时没有出错。我尝试了不同的编码,但都报错了。

更新

当我使用 SAX Parser 而不是 XML Pull Parser 时,问题解决了。

【问题讨论】:

标签: android encoding


【解决方案1】:

您的 ADT(假设您使用 ADT)源文件以 iso-8859-1 或 utf-8(默认)编辑。

要检查:在任何 Eclipse 导航器中右键单击文件,选择属性并选择资源面板。在底部,您应该看到 eclipse(和 ADT)在源文件部署到 ADV 之前如何对其进行编码。

【讨论】:

  • 但是,xml 序言 应该指定适用的字符集,您不必“猜测”它。我的理解是不是这样的。当您从标准浏览器通过其 url 访问 xml 时,该文档是否也被检测为格式不正确?
  • 是的,xml 标签没有编码属性。而且我在浏览器中查看时也会出错。这可能只是 XML 文件的问题吗?
  • 当我开始使用 SAX Parser 而不是 XMLPull Parser 时,代码开始正常工作。
  • 浏览器也检测到编码问题的事实仍然意味着这是一种解决方法。如果您有权访问服务器,那么您可能会分析源数据。否则,请告诉我网址,我会看看(também em português ;-)
  • 你说的对,使用的字符集是 iso-8859-1。但是,由于没有 &lt;?xml version="1.0" encoding="iso-8859-1" ?&gt; 标头,XMLPullParser 不做任何假设或错误的假设,并抱怨不在其默认字符集中的字符。我在 XML 文件前面添加了&lt;?xml version="1.0" encoding="ISO-8859-1" ?&gt;,它被 FF 正确解析。文件的 hexa 转储显示 'Ú' 为 0xDA(ISO-8859-1 表示 'Ú',在 UTF-8 中我们会有 0xc3 0x9a。我相信你是 this problem 的受害者
猜你喜欢
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多