处理文本中“特定”字符的问题(在Java中,使用XML解析器)

时间:2009-05-16 10:54:38

标签: xml encoding

使用Java中的DOM API处理文本中的“特定”字符时遇到问题。文件采用XML格式。在之前的帖子中,我被告知XML中的&符号(&)符号的情况是什么(还有几个字符,例如<和>)。这是帖子: Special characters in XML files - processing with the DOM API

但是,我可以用数据中的其他特殊字符做什么,例如德语和法语中的特定字母?例如,我在XML文档的文本元素中有“façade”一词。但是,字母“ç”的位置看起来已损坏:当我在linux中使用vim编辑器打开文件时,它看起来像:“fa ^ Zade”,当我用另一个编辑器打开它作为.txt或.xml文件时, “ç”的位置看起来像一个小的空矩形(或空的空间)。德国变音符号和其他语言的其他“特殊”符号也是如此。当我尝试使用XML解析器处理文件时,他们会遇到问题(我正在解析错误)。我想这是一些编码问题。在XML文件的标题中,我使用的是encoding =“UTF-8”。我试图改变它(即“Unicode”或其他),但它没有帮助。

我怎样才能识别出这些特殊字符?我应该使用一些特殊的编码吗? 如果它们只是两三个字符,我肯定知道,我可以用Java中的DOM API处理它,就像我用&符号(&)符号(我已经转换为&到{{然而,它们很多,并且可能是任何“特殊”符号。 问题来自数据的保存方式吗?例如,在保存过程中应该使用特殊编码(?),以便现在识别字符(?)。 (我自己没有保存过数据) 谢谢。

3 个答案:

答案 0 :(得分:1)

  

如果它们只是两三个字符,我肯定知道,我可以用Java中的DOM API处理它,就像我用&符号(&)符号(我已经转换了&)符号一样。然而,它们很多,并且可能是任何“特殊”符号。

您无需预测所有可能的输入。相反,只需将每个此类实体转换为NCR或数字字符参考。例如€是欧元符号的NCR€;这意味着20AC是欧元符号的十六进制Unicode引用。

答案 1 :(得分:1)

这似乎不是XML上的问题,而是编码问题。 XML可以处理UTF-8和Latin-1。但是你需要知道输入编码或不使用读者,而是使用正确的编码属性的XML声明的输入流。

您确定,来源没有损坏吗?它是哪种编码?第一行中声明的XML编码属性是否正确? ^ Z看起来不像UTF-8编码!

答案 2 :(得分:0)

encoding =“UTF-8”似乎是正确的方法,那么你不应该以不同的方式处理这些字符中的任何一个。您说'在XML文件的标题中我使用的是encoding =“UTF-8”',但您是否也将字符数据写为UTF-8?

在vim中你可以使用“ga”我想在光标下显示字符的代码,这应该有助于调试。