Dienstag, 15. Juni 2010

Unicode-Umwandlungen auf der Kommandozeile

Manchmal habe ich UTF-8-kodierte Zeichen hexadezimal vor mir. Will ich dann das entsprechende Zeichen nachschlagen, ist das nicht so einfach, weil aus der UTF-8-Transformation die tatsächliche Zeichennummer nicht direkt ersichtlich ist. Aber mithilfe von Ruby lässt sich da was machen. So kann man die UTF-8-Darstellung in die entsprechende UTF-16-Fassung umwandeln:

ruby -rkconv -e "%|\xc2\xa0|.kconv(Kconv::UTF16, Kconv::UTF8).each_byte { |b| printf '%02X ', b }"

(Das gehört natürlich alles in eine Zeile.)

Vorne setze ich die UTF-8-Bytes ein (hier: \xc2\xa0), als Ergebnis erhalte ich die entsprechenden UTF-16-Bytes. Vertauscht man die Konstanten Kconv::UTF16 und Kconv::UTF8, so erhält man den umgekehrten Weg.

Das Ganze funktioniert so eventuell nur unter Ruby 1.8. Ruby 1.9 verarbeitet Zeichenketten jetzt mitsamt einer mitgeführten Kodierung, sodass die Beispiele vielleicht ganz anders aussehen müssten.

Keine Kommentare:

Kommentar veröffentlichen