linux 使用iconv将UTF-16 LE转换为UTF-8

hmae6n7t  于 2023-06-21  发布在  Linux
关注(0)|答案(2)|浏览(205)

嗨,我试图从Microsoft SQL服务器转换一些日志文件,但这些文件是使用UTf-16 LE编码的,iconv似乎无法转换它们。
我正在做:

iconv -f UTF-16LE -t UTF-8 <filename>

我还尝试删除行尾的任何回车符(如果有的话),但这也没有解决问题。如果我使用gedit保存它,那就可以了,但这不是一个可行的解决方案,因为我有数百个这样的文件。

编辑:请查看缺少选项的新答案

h43kikqp

h43kikqp1#

我忘了-o开关!
最后一个命令是:

iconv -f UTF-16LE -t UTF-8 <filename> -o <new-filename>
pu3pd22g

pu3pd22g2#

您指定的命令将输出到stdout。您可以使用-o参数,或重定向输出:
-o

iconv -f UTF-16LE -t UTF-8 infile -o outfile

带管道:

iconv -f UTF-16LE -t UTF-8 infile > outfile

两者都会产生预期的结果。
但是,某些版本的iconv(例如macOS上的v1)不支持-o参数,您将看到转换后的文本回显到stdout。在这种情况下,请使用管道选项。

相关问题