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

69

你好,我正在尝试转换一些来自 Microsoft SQL Server 的日志文件,但是这些文件使用 UTf-16LE 编码,iconv 似乎无法将其转换。

我的操作如下:

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

我还尝试删除行末的任何回车符,但这也无法解决问题。如果我使用gedit保存,则可以解决此问题,但由于我有数百个这样的文件,因此这不是可行的解决方案。
编辑:有关缺少选项,请参见新答案。

你好,能否将其中一个答案标记为已验收?:) 祝好! - A. Blesius
2个回答

66

我忘记使用-o开关了!

最终的命令是:

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

35
您指定的命令将输出到标准输出。您可以使用-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中。在这种情况下,请使用管道选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接