Java 奇怪的xml/html重音问题

Java 奇怪的xml/html重音问题,java,html,xml,utf-8,diacritics,Java,Html,Xml,Utf 8,Diacritics,我有一个XML文件,其中包含一条带有html标记的消息。XML文件由一个java类读取,并将其发送给用户。收到邮件时,不会显示重音符号。例如,没有显示 我试过é,但它在eclipse中给出了一个错误,表示尚未声明实体 我还试着简单地插入é但最终输出中没有显示任何内容 我尝试的第三件事是使用,但这破坏了解析器,因为它没有输出任何内容 但是我注意到了一些奇怪的事情。当我在xml中添加类似的内容并添加UTF-16编码时 <message>text bla bla bla

我有一个XML文件,其中包含一条带有html标记的消息。XML文件由一个java类读取,并将其发送给用户。收到邮件时,不会显示重音符号。例如,没有显示

我试过
é,但它在eclipse中给出了一个错误,表示尚未声明实体

我还试着简单地插入
é但最终输出中没有显示任何内容

我尝试的第三件事是使用
,但这破坏了解析器,因为它没有输出任何内容

但是我注意到了一些奇怪的事情。当我在xml中添加类似的内容并添加UTF-16编码时

<message>text bla bla blaa é&lt; 
text bla bla blaaé
它确实像这样在最后发出了一声呜呜呜呜的声音

编辑
text bla bla blaêé
输出?或仅输出一个

该文件如下所示:

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

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

b你好/b

给出了什么?

实体是xml解析器试图解释的html实体。替换
é带有
&;伊库特&生成所需的html实体


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

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

标记中提供的编码密钥必须与用于编辑和保存硬盘上xml文件的“真实”编码一致

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

事实上,我建议使用一个编辑工具,它允许您准确地控制在编辑/保存操作(如)期间要使用的编码,以便您可以保证有效的文件编码及其内容中的给定编码(也就是说在标记中)是相同的

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

编辑2

这还取决于邮件客户端及其管理编码的方式…

我最初尝试使用UTF-8格式的xml文件,并将其切换到UTF-16+1停止尝试寻找编码问题的解决方法,修复它们!我做了一个message=message.replaceAll(“é”、“é;”);在生成html时的右键期间。这似乎可行,但感觉像是一个解决办法:|