在java中输出为UTF-8编码

reu*_*N11 11 java encoding utf-8

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

 System.getProperty("file.encoding") 
Run Code Online (Sandbox Code Playgroud)

我得到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"));
Run Code Online (Sandbox Code Playgroud)

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

dac*_*cwe 14

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

使用java -Dfile.encoding=UTF-8 -jar your-jar-file.jar作品.

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

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

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

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();
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*e G 1

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

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

或者

b) 使用 System.setProperty("file.endcoding") 将属性设置为主方法中的第一件事;

注意@dacwe指出了一些我忘记的事情......纠正了我的答案。