Konvertieren von UTF-16 zu UTF-8

Manchmal ist es schon ein wenig heimtückisch User aus der Nichtunixwelt zu bedienen ;)

seraphyn@takeshi: ~ $ less netzwerkoperationen.txt
"netzwerkoperationen.txt" may be a binary file.  See it anyway?

seraphyn@takeshi: ~ $ file netzwerkoperationen.txt
netzwerkoperationen.txt: Little-endian UTF-16 Unicode text, with CRLF line terminators

So kann es geschehen. Natürlich ist es vim und cat absolut Egal was sie dort einlesen und zeigen den Text auch korrekt an.
Aber wenn ich genau dieses File nun Jemand sende, mit vielleicht einem nicht so schicken Betriebssystem wie meines, dann kann es zu noch mehr Problemen kommen. Man kennt diese Anrufe  ((Gott, ich meine ich möchte mich nun nicht zu stark beschweren ツ ))

Des Rätsels Lösung ist iconv (den OpenGrouplink verschweigen wir dazu auch nicht):

iconv -f utf-16 -t utf-8 netzwerkoperationen.txt > netzwerkoperationenUTF8.txt

Und schon klappt es mit less und dem Menschen mit einem nicht so schicken Betriebssystem.
Man könnte nun auch /usr/bin/lesspipe so patchen, dass es doch freundlicher Weise recode nutzt und UTF-16 oder UTF-32 in UTF-8 umwandelt. Wäre ein netter Patch für Debian Wheezy. Wer daran Interesse hat, findet ab Zeile 78 in /usr/bin/lesspipe den Abschnitt in welchen der Patchpart gehört.

Natürlich funktioniert die oben genannte Umwandlung auch mit anderen textbasierten Dateien, wie z.B. SVG