69

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

b4hand
  • 9,550
  • 4
  • 44
  • 49
laitha0
  • 4,148
  • 11
  • 33
  • 49

2 Answers2

65

I forgot the -o switch!

The final command is :

iconv -f UTF-16LE -t UTF-8 <filename> -o <new-filename>
Michael
  • 41,989
  • 11
  • 82
  • 128
laitha0
  • 4,148
  • 11
  • 33
  • 49
35

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.

ustun
  • 6,941
  • 5
  • 44
  • 57
A. Blesius
  • 473
  • 5
  • 10