Seite 1 von 1

Unicode vs UTF8

Verfasst: 30.06.2016 01:31
von DarkSoul
Ich habe nochmal eine vielleicht banale Frage:

Es gibt diese 3 Stringtypen:

Code: Alles auswählen

#PB_Ascii 
#PB_UTF8 
#PB_Unicode
Ascii und UTF8 sind mir wohlbekannt. Sind beides Zeichencodierungen.

Aber was steckt hinter #PB_Unicode?

Unicode ist (soviel ich weiß) ein Zeichensatz, den man z.B. in UTF8, UTF16 (oder was auch immer so alles gibt) codieren kann.

Äpfel mit Birnen also. :shock:

Welche Codierung schreibt PB z.B. in den Speicher, wenn ich diese Konstante bei PokeS() übergebe? UTF8 ist es jedenfalls nicht.

Re: Unicode vs UTF8

Verfasst: 30.06.2016 05:55
von Imhotheb
Um es kurz Zusammen zu fassen...
Ascii = 1 Byte pro Zeichen
Unicode = 2 Byte pro Zeichen
Utf8 = 1 bis 4 Byte pro Zeichen (die ersten 128 Zeichen sind gleich den Ascii-Zeichen)
PokeS und PeekS akzeptieren Flags um die Kodierung zu ändern

Re: Unicode vs UTF8

Verfasst: 30.06.2016 09:11
von Bisonte
DarkSoul hat geschrieben:Welche Codierung schreibt PB z.B. in den Speicher, wenn ich diese Konstante bei PokeS() übergebe? UTF8 ist es jedenfalls nicht.
Wenn du noch nicht die Beta5.50 benutzt, hängt das von deinen Compiler-Optionen ab.
Wenn du dort UNICODE eingestellt hast, wird bei PokeS ohne Parameter auch in Unicode "gepoke't".

Re: Unicode vs UTF8

Verfasst: 30.06.2016 15:22
von Nino
DarkSoul hat geschrieben:Unicode ist (soviel ich weiß) ein Zeichensatz, den man z.B. in UTF8, UTF16 (oder was auch immer so alles gibt) codieren kann.

Äpfel mit Birnen also. :shock:

Genau so ist es, leider. Der Begriff "Unicode" wird bei PB missverständlich verwendet.
Wenn in der PB-Dokumentation "Unicode" steht, ist meistens "UCS-2" gemeint.
DarkSoul hat geschrieben:Welche Codierung schreibt PB z.B. in den Speicher, wenn ich diese Konstante bei PokeS() übergebe? UTF8 ist es jedenfalls nicht.
Ohne Angabe eines Flags wird ASCII verwendet, wenn das Programm im "ASCII-Modus" (den es beginnend mit Version 5.50 nicht mehr gibt) compiliert wird, und UCS-2 wenn das Programm im sog. "Unicode-Modus" compiliert wird. Wenn Du #PB_Unicode als Flag übergibst, wird ebenfalls UCS-2 verwendet.

Re: Unicode vs UTF8

Verfasst: 30.06.2016 19:05
von DarkSoul
Vielen Dank.

Ich dachte mir schon, dass es UCS-2 ist. Wollte sichergehen. #PB_UCS_2 hätte ich glücklicher gewählt gefunden. War mir unsicher, ob es nicht UTF16 oder noch was anderes ist. :mrgreen:

Ich wollte eben wegen der bevorstehenden "Ascii-Abschaltung " bestehende Sources umrüsten. Dabei sind mir manche interne Schnittstellen kaputt gegangen, weil durch die 16-Bit-Codierung teilweise das höhere Byte 0 ist und das als Stringende fehlerkannt wurde.

Ich dachte zunächst, es wäre UTF8 und habe mich gewundert, warum die Codierung kaputt ist.

Naja, ich werde auf UTF8 umrüsten.