Textdaten einer Datenbank nach UTF8 konvertieren
Ab Version 4.7.0 arbeitet ClassiX mit Unicode. Für Stringdaten werden UTF8 kodiert. Das betrifft auch alle Textdaten der Datenbank.
Deshalb kann ClassiX 4.7.x nicht mehr mit älteren Datenbanken gestartet werden; die Datenbank muss konvertiert werden.
Diese Aufgabe erfüllt das Dienstprogramm cxgosuo.exe.
Alle Funktionen werden über Flag /8 mit Unterparametern aufgerufen:
Achtung: Die Änderung des Zeichen-Codes macht Datenbank-Indexe über String-Felder unbrauchbar.
Betroffene Indexe müssen ab- und nach der Konvertierung wieder aufgebaut werden.
Deaktivieren betroffener Indexe
- manuell interaktiv auswählen oder
- mit Methode DeactivateAll des Index-Managers alle auf Strings bezogenen Indizes deaktivieren oder
- mit Methode DeactivateSelected des Index-Managers alle die Indizes deaktivieren, die sich auf solche Datenfelder beziehen, für die tatsächlich Strings konvertiert wurden.
Eine Statistik darüber steht am Ende des Log-Files der Konvertierung.
Reaktivieren betroffener Indexe
- manuell oder
- mit Methode ReactivateAll des Index-Managers
Betroffene Indizes müssen spätestens vor der Kontrolle mit /8verify aufgebaut sein.
Hinweise zur Fehlerkontrolle
Für die Konvertierung wird in der Datenbank über alle ClassiX-Objekte iteriert.
Die Verifikation hingegen iteriert über alle Zeichenketten in der Datenbank.
Dabei werden auch
- die Image-Daten der Klasse CX_BITMAP gesehen (für Format .bmp steht immer BM am Beginn, bei .jpg erscheint of die Zeichenfolge exif. → diese Fehler ignorieren!
- die Stream-Daten aller COM-Objekte → Fehler in den entsprechenden Segmenten ignorieren!
- die komprimierten Bytes der XML-Objekte (CX_WORD_XML) → Fehler in den entsprechenden Segmenten ignorieren!
Die "alten" Dictionary-Klassen CX_INDEX, CX_INDEX_CI, CX_DICTIONARY und CX_DICTIONARY_CI werden ab Version 4.7.0 nicht mehr unterstützt.
Diese Objekte werden nicht konvertiert und sind dementsprechend nach der UTF8-Konvertierung unbrauchbar!
CX_MAX_AS_HANDLING
Tauchen bei der Konvertierung bestimmter Segmente Probleme mit dem Address-Space auf, so sollten diese separat konvertiert werden. Reicht dies weiterhin nicht aus, so kann die Umgebungsvariable CX_MAX_AS_HANDLING auf TRUE gesetzt werden, um ein maximales Address-Space-Handling zu aktivieren.