Java 未显示UTF-8字符

Java 未显示UTF-8字符,java,unicode,utf-8,sendmail,postfix-mta,Java,Unicode,Utf 8,Sendmail,Postfix Mta,当我运行JUnit测试用例来调用发送邮件的独立应用程序时,字符在邮件中正确显示,但是当这个应用程序通过一个线程在另一台机器上运行时,它会显示吗?而不是真正的角色。 我的这个程序使用unix的sendMail发送,远程机器使用POSTFIX。 有人能想出问题的可能原因吗?显示一些代码。但最有可能的情况是,您没有明确指定要使用的字符编码,并且一个平台上的默认值与您预期的一样,而另一个平台上的默认值则与此不同。您可能忘记了将输出流的编码显式设置为UTF-8。Java的正常默认编码是一些平台本地8位的东

当我运行JUnit测试用例来调用发送邮件的独立应用程序时,字符在邮件中正确显示,但是当这个应用程序通过一个线程在另一台机器上运行时,它会显示吗?而不是真正的角色。 我的这个程序使用unix的sendMail发送,远程机器使用POSTFIX。
有人能想出问题的可能原因吗?

显示一些代码。但最有可能的情况是,您没有明确指定要使用的字符编码,并且一个平台上的默认值与您预期的一样,而另一个平台上的默认值则与此不同。

您可能忘记了将输出流的编码显式设置为UTF-8。Java的正常默认编码是一些平台本地8位的东西,它顽皮地用
字符替换不匹配的字符


您可能应该在程序本身中执行此操作。但是,您可以在javac命令行上传递
-Dfile.encoding=UTF-8
。取决于情况。

您可能需要在应用程序中指定默认MIME字符集!这被记录为“只读”属性。也就是说,JVM确定平台默认值,并通过此属性使其可用。也就是说,我相信这在Sun JVM上是有效的。尽管如此,它被记录为只读的,所以如果这种方法在将来停止工作,不要感到惊讶。