Sven Rautenberg: Unicode nach UTF-8 konvertieren

Beitrag lesen

Moin!

Ich habe eine Datei, die in Unicode (!nicht UTF-8!) kodiert ist.

Das gibts nicht. "Unicode" ist keine Kodierungsform. UTF-8 ist eine, außerdem gibt es UTF-16, UTF-32, UTF-7 und vermutlich noch etliche andere, die inder Praxis irrelevant sind.

Was also genau meinst du?

Nun habe ich mit einem Hex-Editor die beiden Dateien atest.txt und btest.txt verglichen und folgendes gesehen.
a) ASCII-Zeichen werden richtig konvertiert (was ja auch identisch ist)
b) auch der erweiterte Bereich z.B. Unicode DF wird richtig nach UTF-8 C39F konvertiert (dies ist das deutsche sz).
c) Aber andere Zeichen z.B. Unicode 2022 wird nicht korrekt nach UTF-8 konvertiert, was dort E280A2 lauten müsste. Es bleibt dort einfach 2022 stehen.

Offenbar codiert deine Funktion byteorientiert alles, was >0x7F ist, und beläßt alles, was <0x80 ist.

Dabei ist das Encoding von UTF-8 ja nicht wirklich kompliziert, wenn man tatsächlich den Codepoint des Unicode-Zeichens hat.
http://www.unicode.org/faq/utf_bom.html

- Sven Rautenberg

--
My sssignature, my preciousssss!