【问题标题】:How can I set encoding for vtd-xml?如何为 vtd-xml 设置编码?
【发布时间】:2015-03-18 07:59:48
【问题描述】:

问题是有些 xml 文件在 xml 中没有可用的标头信息。 解析 xml 文件时,vtd-xml 默认使用 utf-8 并抛出异常说 cannot parse document。 (xml 编码是 8859-2,但没有标头信息。)

我尝试使用 -Dfile.encoding=iso-8859-2 但没有帮助。

问题:如何为 xml 文件设置(默认)编码?

【问题讨论】:

  • 嗨,Xml 规范说编码是强制性声明。没有它,XML 文档就不是有效的 xml。最快的解决方法是添加一个 XML 声明头来指示编码...
  • 强制,utf-8 除外。

标签: vtd-xml


【解决方案1】:

对于 ut8 以外的单字节编码,XML 规范要求编码声明。否则,它不是有效的 XML 文档。

【讨论】:

  • Ok 无效但可以解析。唯一缺少的就是缺少编码。我不想做出丑陋的变通方法,例如在 xml 中添加缺少的标头。如果您尝试创建 4 gb xml 文件,这可能是非常耗时的操作。 vtd-xml应该提供设置缺失编码的API方法,
  • 我相信添加缺少的标头是解决此问题的正确方法和最简单的方法...添加选项来设置编码并不是一种严格的方法。没有编码声明,您将其隐式设置为 UTF-8 编码。如果您的同事必须接管您的工作并且不得不花费额外的时间来找出它,但他不知道编码怎么办。 .. 永久解决问题对您来说更简单吗?
  • 当您必须处理 xml 但没有标头的数据时,知道它不是 100% 有效是没有帮助的。它仍然需要处理,即使我知道编码,我也无法为 api 显式设置它。
  • 如果你必须为每个文件都这样做,那么你没有正确生成这些 XML,你遇到的问题比我最初想象的要大......
  • 虽然需要 XML 处理器来读取 UTF-8 和 UTF-16 编码的实体,但公认的是世界各地都在使用其他编码,并且可能希望 XML 处理器能够读取使用它们的实体。在没有外部字符编码信息(例如 MIME 标头)的情况下,以 UTF-8 或 UTF-16 以外的编码存储的已解析实体必须以包含编码的文本声明(参见 4.3.1 文本声明)开头声明:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多