使用java和UTF-16LE到UTF-8转换打开xls文件并将其保存为tsv文件

使用java和UTF-16LE到UTF-8转换打开xls文件并将其保存为tsv文件,java,file-io,xls,tsv,Java,File Io,Xls,Tsv,我有两个问题: 有没有一种方法可以通过Java打开xls文件并将其保存为tsv文件? 编辑: 或者有没有一种方法可以通过Java将xls文件转换为tsv文件 有没有一种方法可以使用java将UTF-16LE文件转换为UTF-8 谢谢有一个名为的库,允许您打开/编辑/保存.xls文件。 一旦读取了.xls文件,就不难编写输出为.tsv的内容 我有两个问题: 关于StackOverflow,你应该把它分成两个不同的问题 我会回答你的第二个问题: 有没有一种方法可以让我们使用 爪哇 当然可以。还有不止

我有两个问题:

有没有一种方法可以通过Java打开xls文件并将其保存为tsv文件? 编辑: 或者有没有一种方法可以通过Java将xls文件转换为tsv文件

有没有一种方法可以使用java将UTF-16LE文件转换为UTF-8

谢谢

有一个名为的库,允许您打开/编辑/保存.xls文件。 一旦读取了.xls文件,就不难编写输出为.tsv的内容

我有两个问题:

关于StackOverflow,你应该把它分成两个不同的问题

我会回答你的第二个问题:

有没有一种方法可以让我们使用 爪哇

当然可以。还有不止一种方法

基本上,您希望读取指定输入编码(UTF-16LE)的输入文件,然后写入指定输出编码(UTF-8)的文件

假设您有一些UTF-16LE编码的文件:

... $ file testInput.txt 
testInput.txt: Little-endian UTF-16 Unicode character data
然后,您基本上可以在Java中执行类似的操作(这只是一个示例:您需要填写缺少的异常处理代码,可能不会在末尾添加最后一行换行符,可能会丢弃BOM(如果有的话),等等):

这将创建一个UTF-8编码文件

$ file testOutput.txt 
testOutput.txt: UTF-8 Unicode (with BOM) text
例如,可以使用hexdump清楚地查看BOM:

BOM在UTF-8(ef bb fb)中按三个字节编码,而在UTF-16中按两个字节编码。在UTF16-LE中,BOM如下所示:

$ hexdump testInput.txt -C
00000000  ff fe ... (snip)
请注意,UTF-8编码文件可能有也可能没有(两者都完全有效)具有“BOM”(字节顺序掩码)。UTF-8文件中的BOM并没有那么愚蠢:您不关心字节顺序,但它可以帮助您快速将文本文件识别为UTF-8编码。根据Unicode规范,带有BOM的UTF-8文件是完全合法的,因此无法处理以BOM开头的UTF-8文件的读者将被破坏。简单明了

如果由于任何原因,您正在使用损坏的UTF-8读卡器,无法处理BOM,那么您可能希望在将BOM写入磁盘之前从第一个字符串中删除BOM

有关BOM的更多信息,请参见:


这就是问题所在。当我们使用jexcelapi时,没有给出“另存为”的方法。那还有别的办法吗?
 $ hexdump testOutput.txt -C
00000000  ef bb bf ... (snip)
$ hexdump testInput.txt -C
00000000  ff fe ... (snip)