在java中输出为UTF-8编码

时间:2011-07-18 12:42:10

标签: java encoding utf-8

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

 System.getProperty("file.encoding") 

我得到UTF-8.i通过eclipse run-option运行我的prog并且输出(文本文件)以UTF-8编码。但是当我将源代码压缩成jar文件时,输出文件显示错误在某些字母表中,例如Ã.what在使用eclipse和frm jar文件中的prog时使用此差异?我是否必须在源代码中指定要在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"));

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

2 个答案:

答案 0 :(得分:13)

在@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();
}

答案 1 :(得分:1)

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

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

<击> 或

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

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