【问题标题】:Write text file in UCS-2 Little Endian, Java用 UCS-2 Little Endian,Java 编写文本文件
【发布时间】:2013-06-09 12:52:48
【问题描述】:

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

感谢您的任何建议。

【问题讨论】:

    标签: java encoding writer ucs2


    【解决方案1】:

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

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

    write('\xff\xfe')
    

    希望这对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      听起来你需要先写一个byte-order mark,这样你的应用程序才能检测到编码。 (不清楚你所说的“它说”是什么意思 - 显然无论“它”是什么都可以猜测它是 UTF-16LE,但不如你有 BOM 时可靠。)

      所以只需添加:

      writer.write("\uFEFF");
      

      在你写其他东西之前。

      【讨论】:

      • 非常感谢,这正是我想要的。 :)
      猜你喜欢
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多