1

我有一个 XML 文件,其中包含一条带有 html 标签的消息。XML 文件由一个 java 类读取,该类将其邮寄给人们。收到邮件时,重音符号不显示。例如 é 不显示。

我已经é在 xml 中尝试过,但它在 eclipse 中给出了一个错误,表明该实体尚未被声明。

我也尝试简单地插入é,但在最终输出中没有显示任何内容。

我尝试的第三件事是使用<![CDATA[é]]>,但这破坏了解析器,因为它之后没有输出任何东西。

然而,我注意到了一些奇怪的事情。当我在 xml 中添加这样的内容并添加 UTF-16 编码时

<message>text bla bla blaa é&lt; 

它确实像这个bla bla blaa blaa é一样在末尾输出了é。

EDIT <message>text bla bla blaa éé&lt; 输出 ?é 或仅输出一个 é

该文件看起来像这样:

<?xml version="1.0"? encoding="UTF-16">

<message>
&lt;b&gt;hello é &lt;/b&gt;
</message>
</xml>

是什么赋予了?

4

3 回答 3

2

您是否尝试将编码更改为 UTF-8?

于 2010-03-30T18:51:02.897 回答
1

您在标签中提供的编码密钥必须与用于编辑和保存硬盘驱动器上的 xml 文件的“真实”编码一致。

如果您在 Windows 下使用记事本在某些欧洲国家/地区编辑您的 xml 文件,它肯定会以 cp1252 编码(Windows 在这种情况下使用的默认编码,注意 cp1252 是标准化 ISO8859-1 的一个轻微变体,包括欧元符号)。

事实上,我建议使用一个编辑工具,它可以让您准确控制在编辑/保存操作期间使用哪种编码(如http://jedit.org),这样您就可以保证有效的文件编码和给定的编码它的内容(可以在标签中说)是相同的。

编辑
它还很大程度上取决于您的 java 程序读取 xml 文件并使用它的方式。如果使用xml解析器,应该没问题。否则,您可能必须使用 ISO-8859-1 编码来存储文件,因为它是 java 使用的默认读取编码。如果你很不走运,并且在 java 类中的文件读取过程中使用了另一种编码,那么你必须遵守...

编辑 2
它还取决于邮件客户端及其管理编码的方式...

于 2010-03-30T19:13:30.410 回答
0

é 实体是您的 xml 解析器试图解释的 html 实体。替换&eacute;&amp;eacute;xml 解析器只会解释&amp;生成您想要的 html 实体的内容。

关于 UTF-16 编码,这里缺少的关键信息是文件的编码。听起来文件以 UTF-16 格式保存,没有字节顺序标记,这可以解释为什么它只适用于指定的编码。您可以通过检查文件大小来验证这一点:它将是文件中字符数的两倍(如果您使用某些 unicode 字符,可能会更多)。您可以尝试的其他可能的编码是 UTF-8 和 iso-8859-1。

于 2010-03-30T18:48:38.323 回答