3

我正在尝试编写 .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();

感谢您的任何建议。

4

2 回答 2

10

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

所以只需添加:

writer.write("\uFEFF");

在你写别的之前。

于 2013-06-13T07:56:49.240 回答
2

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

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

write('\xff\xfe')

希望这对其他人有帮助。

于 2013-08-14T17:51:47.433 回答