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

时间:2013-06-13 07:54:32

标签: 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”并且服务器无法读取它。 / p>

我怎么写它才能起作用?这是完整的代码:

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();

感谢您的任何建议。

2 个答案:

答案 0 :(得分:9)

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

所以只需添加:

writer.write("\uFEFF");
在你写任何其他内容之前

答案 1 :(得分:2)

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

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

write('\xff\xfe')

希望这有助于其他人。