在UCS-2 Little Endian,Java中编写文本文件

我正在尝试编写.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 PrintWriter(path, "UTF-16LE"); for (int j = (i - itemsInPlaylist + 1); j <= i; j++) { writer.println(listParsedFile.get(j).getNameOfFile()); } itemsInPlaylist = 0; writer.close(); 

谢谢你的任何建议。

听起来您需要先写一个字节顺序标记 ,以便您的应用程序可以检测到编码。 (目前还不清楚“它说”是什么意思 – 显然无论“它”是什么都可以猜到它是UTF-16LE,但不如你获得BOM时那么可靠。)

所以只需添加:

 writer.write("\uFEFF"); 

在你写别的之前。

我在Jython上遇到了这个问题。

在Jython 2.5.2上Jon Skeet的回答不起作用。 你需要

 write('\xff\xfe') 

希望这有助于其他人。