在OutputStreamWriter中选择文件编码

时间:2013-01-03 10:29:41

标签: java file-io

我在Linux服务器上使用JDK 1.7。我已经安装了apache 6.0.35并使用代码

Writer w = new OutputStreamWriter(os,"Unicode");

以unicode格式编写文件。

但该文件是以unicode big endian格式生成的。如何选择不同的输出格式?

3 个答案:

答案 0 :(得分:2)

'Unicode'不是单一格式,而是指定UTF-16(大端和小端)和UTF-8等编码。

您可能需要特定内容,例如UTF-16LE而不是Unicode。请查看http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html

中的列表

答案 1 :(得分:1)

如果您使用Unicode或UTF-16,默认情况下它将是大端。如果您没有指定endianess,那么Java通常会使用big endian。如果您想要小端,则需要使用"UTF-16LE"StandardCharsets.UTF_16LE

指定它

来自java.nio.charset.StandardCharsets

public static final Charset UTF_16LE = Charset.forName("UTF-16LE");

答案 2 :(得分:0)

Java charset名称“UTF-16”表示带有大端的UTF-16。 尝试类似这种小端格式:

BufferedWriter out = new BufferedWriter
    (new OutputStreamWriter(new FileOutputStream(path),"UTF-16LE"));