Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
Delphi 12 Athens
|
AW: GUIDToString: welche Feldgrösse in der DB?
3. Mär 2016, 14:18
Ja, 36 Zeichen sind auch 36 Zeichen, aber vom "internen" Speicher her halt nicht.
DBMS arbeiten gern mit festen Größen.
36 Unicode-Zeichen brauchen immer 36*2 Byte.
Als ANSI, je nach CodePage 36 Byte oder mehr. (MultiByteZeichensätze)
UTF-8 ist im Prinzip " ANSI" mit der Codepage 65001.
UTF-8-Zeichen können bei "UCS2" bis zu 4 Byte pro Zeichen benötigen und wenn das DBMS jetzt eine feste Größe braucht/will, dann muß es von einem String mit maximaler Länger und mit den "schlimmsten" Unicode-Zeichen ausgehen.
MaxString := #65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535#65535;
Voller UTF-16-Umfang (#0..#$10FFFF) ging bis zu 5 Byte in UTF-8 (glaub ich) und genau 2 Byte ohne und 4 Byte mit Surrogates im UTF-16.
Ein VACHAR(36) ist ein String mit bis zu 36 Zeichen Länge. Welcher Zeichensatz (und damit wieviel "interner" Speicher), das wird über die Collation (u.U. hintenrum über eine Domäne) festgelegt.
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|