我在Linux服務器上使用JDK 1.7。我已經安裝了apache 6.0.35並使用代碼在OutputStreamWriter中選擇文件編碼
Writer w = new OutputStreamWriter(os,"Unicode");
以unicode格式寫入文件。
但是該文件是以unicode big endian格式生成的。我如何選擇不同的輸出格式?
我在Linux服務器上使用JDK 1.7。我已經安裝了apache 6.0.35並使用代碼在OutputStreamWriter中選擇文件編碼
Writer w = new OutputStreamWriter(os,"Unicode");
以unicode格式寫入文件。
但是該文件是以unicode big endian格式生成的。我如何選擇不同的輸出格式?
'Unicode'不是一種格式,但是指定了像UTF-16(大和小端)和UTF-8這樣的編碼。
您可能需要特定的東西,如UTF-16LE
而不是Unicode
。看一下http://docs.oracle.com/javase/7/docs/api/java/nio/charset/StandardCharsets.html的列表
注意:它是Charset.UTF_16LE或「UTF-16LE」 –
@PeterLawrey感謝您的糾正。下劃線文字版本也適用於我;我想這是一個別名。 – artbristol
對不起,這是StandardCharsets.UTF_16LE。 :] –
如果你使用的是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");
我也試過這個,生成的文件是ANSI格式。該應用程序在linux服務器下運行。我需要安裝X11R6嗎? – prasad
Java的字符集名 「UTF-16」 是指UTF-16與大端。 嘗試是這樣的小端格式:
BufferedWriter out = new BufferedWriter
(new OutputStreamWriter(new FileOutputStream(path),"UTF-16LE"));
可能重複:http://stackoverflow.com/questions/7024039/in-java-when-writing-to-a-file-with-dataoutputstream-how- do-i-define-the-endia – Lennart