我在Linux服务器上使用JDK 1.7。我已经安装了apache 6.0.35并使用代码
Writer w = new OutputStreamWriter(os,"Unicode");
以unicode格式编写文件。
但该文件是以unicode big endian格式生成的。如何选择不同的输出格式?
答案 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"));