【问题标题】:XML encoding setup and specific charsetsXML 编码设置和特定字符集
【发布时间】:2013-11-26 12:07:35
【问题描述】:

我必须阅读具有 X; 字符集的大型 XML 文档(千兆字节),其中 XX 小于 31。通常,我知道这些字符集 (

文件的作者决定在文本中使用这个字符集,而改变它是我无法控制的。

在声明 xml 文件的标头:<?xml version="1.0" encoding ="UTF-8"?> 时,我尝试了除 UTF-8 之外的不同 xml 编码方案声明,但尝试在我的 XML 解析器中呈现它时没有成功。

为了使问题可重现和清晰,请考虑下面的简单 xml 文件(例如,在姓名 Fred 后面有 字符集):

<?xml version="1.0" encoding ="UTF-8"?> 
<TABLE> 
 <GRADES> 
 <STUDENT> Fred &#01; </STUDENT> 
 <TEST1> 1 </TEST1> 
 <TEST2> 2 </TEST2> 
 <FINAL> 3 </FINAL> 
 </GRADES> 
 <GRADES> 
 <STUDENT> Wilma </STUDENT> 
 <TEST1> 1 </TEST1> 
 <TEST2> 2 </TEST2> 
 <FINAL> 3 </FINAL> 
 </GRADES> 
</TABLE>

当我在不同的浏览器中读取这些文件时,我得到了错误:

第 4 行第 22 列的错误:xmlParseCharRef: invalid xmlChar value 1

我知道一个可能的解决方案是预处理原始文件,查找并替换导致错误的字符,但是有人知道解决此问题的其他方法吗?是否有任何支持 X; 字符集 (XX

【问题讨论】:

    标签: xml xml-parsing


    【解决方案1】:

    并非所有字符在 XML 1.0 中都是合法的。 (http://www.w3.org/TR/REC-xml/#charsets)

    如果您的工具支持 XML 1.1,将它们切换到该模式将允许一些以前禁止使用的字符 (http://www.w3.org/TR/xml11/#charsets)

    通常的解决方案是不要尝试将控制字符放入 XML 文档中。相反,将二进制数据编码为 hex 或 base64 或其他一些文本表示,并让应用程序代码在需要时将其转换回二进制。

    【讨论】:

      猜你喜欢
      • 2019-07-08
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 2014-02-06
      • 2011-09-11
      • 2012-02-23
      • 2012-01-07
      • 2011-10-14
      相关资源
      最近更新 更多