Der Zeichensatz in Datensätzen

Auch für die Speicherung von Zeichenketten in Datensätzen spielt der verwendete Zeichensatz eine Rolle. Standardmäßig wird auch hier der conzept 16-Zeichensatz verwendet, der in dem Artikel „Der Zeichensatz in conzept 16“ beschrieben wurde.


Sollen Datensätze in einem anderen Zeichensatz als dem conzept 16-Zeichensatz in der Datenbank abgelegt werden, gibt es momentan einige Dinge zu beachten. In diesem Artikel nehme ich den UTF-8-Zeichensatz als Beispiel. Dafür wird vorrausgesetzt, dass der Dialog als Unicode-Dialog gespeichert wurde.

Beim Speichern muss die zu setzende Zeichenkette in den gewünschten Zielzeichensatz gewandelt werden. Das Eingabefeld kann hierzu nicht direkt mit dem Datenbankfeld über die Eigenschaft wpDbFieldName verknüpft werden.

Beim Speichern wird der Inhalt aus dem Eingabeobjekt wie folgt in das Datenbankfeld übertragen:

// Zeichenkette in das Datenbankfeld schreiben
faUniValue # StrCnv(StrCnv($edfaUniValue->wpCaption, _StrToUTF8),
                    _StrFromANSI);

Um den Feldinhalt in dem Eingabefeld wieder korrekt darzustellen, muss die Zeichenkette zum Beispiel im Ereignis EvtLstSelect zurück konvertiert werden. Dies geschieht mit der folgenden Befehlsfolge:

// Zeichenkette in Eingabe-Objekt schreiben
$edfaUniValue->wpCaption # StrCnv(StrCnv(faUniValue, _StrToANSI),
                                  _StrFromUTF8);

Analog dazu kann das Feld im Ereignis EvtLstDataInit als Spalteninhalt einer RecList gesetzt werden.

// Datensatz lesen
RecRead(tblUniUnicode, 0, _RecId, aID);
// Feld von UTF-8 konvertieren
faUniValue # StrCnv(StrCnv(faUniValue, _StrToANSI), _StrFromUTF8);

Auch in Label-Objekten kann der Inhalt nicht aus der Eigenschaft wpDbFieldName verwendet werden. Es genügt jedoch eine Zuweisung des Feldinhaltes an die Eigenschaft wpCaption des Labels.

Da die Zeichenkette momentan nicht als UTF-8 gespeichert wird, können momentan nur die ersten 256 Zeichen eines Zeichensatzes verwendet werden. Je nach ausgewähltem Zeichensatz werden die Zeichen anders dargestellt.

In Zukunft soll sich das Vorgehen vereinfachen und Unicode direkt unterstützt werden.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

Your yeet Trial Version - request it now!

TEST yeet - NON-BINDING and FREE OF CHARGE

Deine yeet Trial Version - jetzt anfordern!

TESTE yeet - UNVERBINDLICH und KOSTENFREI

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner