70

Hi I am trying to convert some log files from a Microsoft SQL server, but the files are encoded using UTf-16LE and iconv does not seem to be able to convert them.

I am doing:

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

I also tried to delete any carriage returns from the end of the line if there are any, but that did not fix it either. If I save it using gedit that works, but this is not a viable solution since I have hundreds of those files.

EDIT: Please see the new answer for the missing option

1
  • hello, could you maybe mark one of the answers as accepted? :) Cheers! Commented May 15, 2020 at 9:42

2 Answers 2

68

I forgot the -o switch!

The final command is :

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

The command you specified will output to stdout. You can either use the -o parameter, or redirect your output:

with -o:

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

with piping:

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

Both will yield the desired result.

However some versions of iconv (v1 on macOS for example) do not support the -o parameter and you will see that the converted text is echoed to stdout. In that case, use the piping option.

Not the answer you're looking for? Browse other questions tagged or ask your own question.