在java中输出为UTF-8编码

我使用eclipse的程序输出文件有问题.i将我的eclipse设置为UTF-8并使用

System.getProperty("file.encoding") 

我得到UTF-8.i通过eclipse run-option运行我的prog并且输出(文本文件)以UTF-8编码。但是当我将源代码压缩成jar文件时,输出文件显示某些错误当在eclipse和frm jar文件中重新编写prog时,像.what这样的字母是什么?我必须在源代码中指定要在utf-8中编码的输出吗?请帮忙。

来自@dacwe的帮助确实产生了所需的输出。但是我可以知道如何在命令行外运行我的可执行文件.jar文件吗?-Dfile.encoding = UTF-8怎么样?

@dacwe:我尝试将源代码更改为

  BufferedWriter bout = new java.io.BufferedWriter(new java.io.OutputStreamWriter( new java.io.FileOutputStream(filename), "UTF-8")); 

但输出仍然没有正确编码。我想念的是什么?

在@Dave G的回答中进行了一些重要的讨论!

使用java -Dfile.encoding=UTF-8 -jar your-jar-file.jar有效。

更新你的代码@Dave G建议(和你的编辑)应该工作。

  • 你真的重新包装了你的jar子吗?
  • 你在bout上打电话给close()吗? (例如,您的文件可能未更新)

这是一个可能让你前进的完整示例:

 public static void main(String... args) throws Exception { PrintWriter out = new PrintWriter(new File("hello.txt"), "UTF-8"); out.print("written in utf-8"); out.close(); } 

从JAR文件运行时,是否通过-Dfile.encoding设置file.encoding属性? 如果没有,你也可以

a)使用该编码显式打开流。 为此,您必须创建一个OutputStream,然后将其包装在OutputStreamWriter中,显式指示字符编码。

要么

b)使用System.setProperty(“file.endcoding”)将属性设置为main方法中的第一个属性;

注意 @dacwe指出我忘了的东西…纠正了我的答案。