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!