Moin!
nein, nein, nein, vollkommenes Missverständnis.
Die Zeichen in der Datei sind so wie unter:
http://de.selfhtml.org/inter/unicode.htm ganz unten zu sehen.
Ein Zeichen wird mit 4 Hexadezimal-Zahlen repräsentiert (zwei Byte breiten Zeichen). Ganz normales Unicode. Nicht UTF-16 oder UTF-32 kodiert oder was auch auch immer (vollkommen uncodierte Unicode mit 2 Byte breiten Zeichen).
Das Problem ist: Es gibt kein "vollkommen uncodiertes Unicode".
Unicode mit 2 Byte breiten Zeichen ist eine der verschiedenen Erscheinungsformen von UTF-16. Weil: Es gibt mehr als 0xFFFF verschiedene Unicode-Zeichen, Unicode ist KEIN 16-Bit-Zeichensatz, er ist per Definition eigentlich unbegrenzt, derzeit sind im Bereich von 0x00000000 bis 0x0010FFFF Zeichen definiert.
Und genau dieses möchte ich in UTF-8 überführen und da dachte ich dass perl bestimmt so eine Funktion aufweisen kann, die das macht.
Aber dem schein leider wohl nicht so zu sein.
Du mußt verstehen, welches Encoding deine Datei hat. Wenn da irgendeine Form von Unicode drinsteht, dann hat diese eine der konkreten Codierungsformen. Codierung meint dabei nicht, dass es irgendwie kryptisch komplex berechnet wurde, sondern einfach eine simple Zuordnung "Wenn das Unicode-Zeichen mit dem Codepoint hex 0x2022 gemeint ist, dann speichere die Bytes W, X, Y und Z" - je nachdem, welche Zuordnungsvorschrift (die UTF-32, UTF-16, UTF-8 etc. heißen) benutzt wird, sieht das Ergebnis entsprechend aus.
Die Ziffern hinter UTF stehen übrigens für die Breite einer "Einheit". UTF-32 benutzt 32-Bit-Einheiten (4 Byte), UTF-16 benutzt 16-Bit-Einheiten (2 Byte) und UTF-8 benutzt 8-Bit-Einheiten (1 Byte). Um aber einen Unicode-Codepoint angeben zu können, sind bei UTF-32 immer nur eine Einheit, bei UTF-16 eine oder zwei Einheiten, und bei UTF-8 zwischen einer und sechs Einheiten notwendig.
Wenn du also glaubst, "normales Unicode mit 2 Bytes je Zeichen" zu haben, dann hast du sehr wahrscheinlich UTF-16 (ob in Big Endian oder Little Endian, das sagt dir die BOM (Byte Order Mark)), und bislang hast du nie gemerkt, dass auch in UTF-16 Zeichen vorkommen können, die aus zwei 2-Byte-Einheiten bestehen können!
- Sven Rautenberg
My sssignature, my preciousssss!