用UCS-2 Little-Endian编写文本文件,Java
我正在尝试编写.txt文件,它必须是UCS-2 Little Endian,但当我尝试用UCS-2 Little-Endian编写文本文件,Java,java,encoding,writer,ucs2,Java,Encoding,Writer,Ucs2,我正在尝试编写.txt文件,它必须是UCS-2 Little Endian,但当我尝试 writer = new PrintWriter(path, "UTF-16LE"); 据我所知,它应该是相同的,但它不会在服务器上的特定应用程序中工作。当我在Notepad++中打开(手动创建的)文件时,它说它是“UCS-2 Little Endian”,但当它像这样用Java创建时,它说“UCS-2 LE w/o BO”,服务器无法读取它 我怎么写才能让它工作呢?这是全部代码: writer = new
writer = new PrintWriter(path, "UTF-16LE");
据我所知,它应该是相同的,但它不会在服务器上的特定应用程序中工作。当我在Notepad++中打开(手动创建的)文件时,它说它是“UCS-2 Little Endian”,但当它像这样用Java创建时,它说“UCS-2 LE w/o BO”,服务器无法读取它
我怎么写才能让它工作呢?这是全部代码:
writer = new PrintWriter(path, "UTF-16LE");
for (int j = (i - itemsInPlaylist + 1); j <= i; j++) {
writer.println(listParsedFile.get(j).getNameOfFile());
}
itemsInPlaylist = 0;
writer.close();
writer=新的PrintWriter(路径,“UTF-16LE”);
对于(int j=(i-itemsInPlaylist+1);j听起来您需要先编写一个,这样您的应用程序才能检测到编码。(不清楚“它说”是什么意思-很明显,无论“它”是什么,都可以猜测它是UTF-16LE,但比您有BOM时更不可靠。)
因此,只需添加:
writer.write("\uFEFF");
在你写其他东西之前。我在Jython上遇到了这个问题
关于Jython 2.5.2 Jon Skeet的答案不起作用,你需要
write('\xff\xfe')
希望这对其他人有帮助。非常感谢,这正是我想要的。:)