001
04.10.2005, 17:23 Uhr
virtual
Sexiest Bit alive (Operator)
|
UTF16 codiert jedes zeichen in genau 16 Bit Einheiten. UTF8 codiert ein Zeichen in 1-N 8 Bit Einheiten. Wie groß N ist, hängt von dem konkreten Zeichen ab, es sind aber - wenn ich mich recht entsinne - bis zu 4 Zeichen denkbar. UTF8 wurde vor allem Deshalb erfunden, weil es vergleichsweise einfach eine Portierung von alter Software hin zu Multibyte erlaubt, was bei UTF16 nicht so leicht gegeben ist.
Wegen der Variabilität eines Zeichens in UTF8 (also zwischen 1 und N 8 Bit Einheiten), sehe ich schwarz, hierfür eine eigene char_traits Spezialisierung zu schreiben, weil char_traits ja eine konstante Größe des char_type erfordert. Daher kann man in C++ im Falle von UTF8 zwar einen std::string benutzen, um UTF8 Strings zu speichern, aber die meisten Routinen von std::string, wie op[] und length() sind natürlich für die katz.
Daher wäre es eher empfehlenswert UTF16 (aka wchar_t) zu verwenden, solange dies nicht an anderer Stelle zu hohen aufwand bedeutet: zwar kann man UTF16 problemlos in UTF8 umwandeln und umgekehrt, aber so richtig Witzig ist das nicht, weil es eben einfach Kosten verursacht. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |