Java应用程序在eclipse中可以很好地呈现Unicode字符,但在导出为可运行的jar文件时却不能

Java应用程序在eclipse中可以很好地呈现Unicode字符,但在导出为可运行的jar文件时却不能,java,eclipse,unicode,jar,Java,Eclipse,Unicode,Jar,我创建了一个显示一些UTF-8字符的Java应用程序(导出为jar文件) 问题是,当我们在eclipse中运行它时,它会正确地显示字符。但是,当我们将其导出为可运行的jar文件并执行时,字符是参差不齐的 原因可能是什么?我猜有些编译设置没有正确设置 任何帮助都将不胜感激 谢谢。将您的字符写入UTF-8编码的文本文件。 在[JDK]/bin文件夹中有一个名为native2ascii的工具,请按如下方式使用它: native2ascii -encoding utf8 input.txt output

我创建了一个显示一些UTF-8字符的Java应用程序(导出为jar文件)

问题是,当我们在eclipse中运行它时,它会正确地显示字符。但是,当我们将其导出为可运行的jar文件并执行时,字符是参差不齐的

原因可能是什么?我猜有些编译设置没有正确设置

任何帮助都将不胜感激


谢谢。

将您的字符写入UTF-8编码的文本文件。 在
[JDK]/bin
文件夹中有一个名为
native2ascii
的工具,请按如下方式使用它:

native2ascii -encoding utf8 input.txt output.txt
将转换结果复制回应用程序的代码中

顺便说一句,将这种资源外部化是个好主意

问题是,当我们在eclipse中运行它时,它会正确地显示字符。但是,当我们将其导出为可运行的jar文件并执行时,字符是参差不齐的

我假设当你说“锯齿”的时候,你是在用这个词的正常英语意思;i、 e.显示的字符可以识别,但渲染粗糙难看

如果是这种情况,那么问题在于呈现字符的字体。这通常由“外观”(我认为)决定,如果您的UI是由Swing呈现的。。。或控制台程序(如果正在向控制台写入)

我猜有些编译设置没有正确设置


我怀疑这与编译器设置有关。

您是否在控制台中打印这些字符?@Claudio谢谢您的回复,Claudio。不,我使用java swing object JEditorPane来显示一些中文字符。您的字符是ASCII转义的(“\u”后跟一个数字)还是直接放入字符串文本中?@Pawel它们是直接放入的。实际上,我的应用程序是一个电子邮件客户端,JEditorPane使用HTMLEditorKit显示一些HTML内容(电子邮件内容)。感谢Pawel的回复。但是,我在运行时动态地从收件箱电子邮件内容中输入Unicode字符,而不是在编译时静态地输入。那我该怎么办呢?对不起,我误解你了。尝试对从源读取的字符串使用ApacheComons。或者,如果存在某种stringbyte[]转换,请确保明确指定UTF-8编码。再次感谢您的建议。嗯,我试过了
StringEscapeUtils
,但还没有成功。有趣的是,它没有正确显示字符,而是显示了类似
“\u517C”
的字符。我不知道你是否使用了HTMLeditor工具包。仅供参考,它显示html内容,就好像JEditorPane(应用它的)是html查看器或其他东西一样。因此,所有标签都适用。我想我可能必须更改
meta
标记中的
charset=UTF-8
设置。好的,我过去在一些不同的情况下使用过这个工具,所以不能保证它会解决您的问题。顺便说一句,您可能希望使用免费的“unescapeJava”方法将字符串(以其原始形式)返回到输出。很抱歉,仍然不走运。感谢Stephen的回复。首先,我的意思是,这些字符没有正确地显示为“锯齿状”,就像一些奇怪的字符。其次,我使用“Arial Unicode MS”作为所选字体。