Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用UCS-2 Little-Endian编写文本文件,Java_Java_Encoding_Writer_Ucs2 - Fatal编程技术网

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

用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

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

希望这对其他人有帮助。

非常感谢,这正是我想要的。:)