So weit ich gehört habe, ist UTF-16 garnicht mehr in der Lage alle Sprachen (und deren Unterarten) der Welt aufzunehmen. Wenn ich jetzt noch die Quelle finden könnte... Könnte mich auch getäuscht haben.
Delphi-Quellcode:
type
UTF8String = type AnsiString(CP_UTF8);
Hierfür gibt es einen einleuchtenden Artikel:
http://blogs.codegear.com/abauer/2008/07/16/38864
http://www.delphi-treff.de/backstage...-2009-tiburon/
Eigentlich ist diese Sache nur ein Aufruf von WideCharToMultiByte und MultiByteToWideChar, wobei die CodePage (hier CP_UTF8) in den Funktionen angegeben wird.
Es hat halt den Vorteil, dass man eine Funktion so resistent gegen eine falsche Codepage eines Strings machen kann. Wenn man seine Strings in einer Funktion nur mit UTF8 manipulieren will, kann man durch Benutzung des Types UTF8String in den Funktionsparametern, dies automatisiert übersetzen lassen. Richtig Vorteilhaft ist dies auch, um den String ohne auf die Zeichengröße zu achten (es ist ja ein AnsiString) in Streams oder andere byteorientierte Container zu speichern. Beim Zurücklesen wird dann durch die Codepage (hier UTF-8) automatisch eine Konversion zu Widestring vollzogen, wenn man es einem WideString zuweist.