UTF8 und Character
Verfasst: 17.03.2011 00:04
Wie ist das eigentlich mit der Char-Größe, also dessen Speichergröße, wenn man ein Programm braucht das sowohl mit UTF8 als auch Ascii klarkommen muss?
In der Hilfe steht dass das Char als Datentyp eine verschieden große Anzahl an Bytes fasst. Je nachdem ob man die Option Unicode-Executable aktiviert hat oder nicht. Wenn man die Option nicht aktiviert hat dann enthält Char immer ein Byte, bei Unicode Executables 2. Man müsste dann also als Unicode Exe kompilieren wenn man Char nutzen will.
UTF8 soll aber bis zu 4 Bytes pro Character brauchen. Wie funktioniert das dann?
...
SizeOf() kann ja die Speichergröße in Byte einer Variable bzw dessen Typ angeben. ZB 2 bei einem Char als Unicode Exe.
Wenn man zB den Zeiger auf das nächste Char in einem String erhalten will dann nutzt man SizeOf() um die entsprechende Anzahl Bytes zu ermitteln die nach vorn gegangen werden muss. Was aber wenn der String ein Ascii-String ist und das Executable im Unicode? Dann würde doch ein Zeichen übersprungen weil die Größe der Unicode-Chars zurückgegeben würde oder? Oder wäre der String dann intern mit leeren Bytes oder so vorgehalten?
In der Hilfe steht dass das Char als Datentyp eine verschieden große Anzahl an Bytes fasst. Je nachdem ob man die Option Unicode-Executable aktiviert hat oder nicht. Wenn man die Option nicht aktiviert hat dann enthält Char immer ein Byte, bei Unicode Executables 2. Man müsste dann also als Unicode Exe kompilieren wenn man Char nutzen will.
UTF8 soll aber bis zu 4 Bytes pro Character brauchen. Wie funktioniert das dann?
...
SizeOf() kann ja die Speichergröße in Byte einer Variable bzw dessen Typ angeben. ZB 2 bei einem Char als Unicode Exe.
Wenn man zB den Zeiger auf das nächste Char in einem String erhalten will dann nutzt man SizeOf() um die entsprechende Anzahl Bytes zu ermitteln die nach vorn gegangen werden muss. Was aber wenn der String ein Ascii-String ist und das Executable im Unicode? Dann würde doch ein Zeichen übersprungen weil die Größe der Unicode-Chars zurückgegeben würde oder? Oder wäre der String dann intern mit leeren Bytes oder so vorgehalten?