infra:NET Expert
 
×
CONVERSION
CONVERSION = dateiname
In der angegebenen Datei müssen zwei Konvertierungstabellen ASCII/ISO für spezielle Zeichensätze stehen, z.B. abgestimmt auf den Verkehr mit der SQL-Datenbank aber auch für Versionen in z.B. griechischer Sprache.
Die Datei muss im INI-Verzeichnis von infra:NET stehen.
Achtung:
Da es beim Arbeiten mit unterschiedlichen Konvertierungstabellen auf der gleichen Datenbank zu einer uneinheitlichen Datenabbildung (Zeichenumsetzung) kommen kann, empfiehlt sich bei einer Netzwerk-Installation mit mehrere Arbeitsplätzen immer der Eintrag "Conversion" in der Sektion [GENERAL] in der Datei SIBPPS.INI statt der Verwendung des Aufrufparameters. Dadurch entfällt auch die Anpassung der infra-Aufrufe an jedem Arbeitsplatz.
Bei Client/Server-Datenbank:
Um Unterschiede bei der Zeichenkonvertierung während der Online-Replikation zu vermeiden, muss auch dem Datenbankserver die zu verwendende Zeichenkonvertierung mitgeteilt werden. Dazu muss die Zeichenkonvertierungsdatei in das INI-Verzeichnis des Datenbankservers kopiert und folgender Eintrag in die INI-Datei des Datenbankservers SBASERV.INI vorgenommen werden:
[GENERAL]
Conversion = Dateiname der Zeichenkonvertierungsdatei
Einsatz von "Conversion = CP858.CNV"
Diese Zeichenkonvertierung ist auf die Zusammenarbeit mit der SQL-Datenbank ausgerichtet (Online- und Total-Replikation) und führt eine vom infra-Standard abweichende Zeichenkonvertierungstabelle für die Umwandlung von Windows-Zeichen (ISO-Zeichensatz 1252) in ASCII-Zeichen (Codepage 858) durch.
Mit Hilfe dieser auch von windowskonformen Tools benutzten Abbildungsvorschrift werden neben den üblichen Umlauten der deutschen Sprache auch alle im Windows- und ASCII-Zeichensatz vorkommenden Symbole (wie z.B. "ø", "Ø" usw. ) korrekt ineinander umgewandelt.
Wichtig bei Aktivierung von "Conversion = CP858.CNV":
  • Das Verhalten beim Export und Import von infra-Daten bei Sonderzeichen verändert sich.
    Die kritischen Zeichen werden nun laut der neuen Konvertierungstabelle geliefert und erwartet.
    Betroffen sind die über Schnittstellen angesprochenen Programme wie FIBU CAD, CAQ, BDE usw., aber auch der Export und Import über das Auskunftssystem, die Druckmedien, die Stammdatenprogramme, das infra-Installationssystem oder die IPS-Steuerdateien.
  • Falls in der infra-Datenbank bereits kritische Symbole verwendet werden, führt der Einsatz der neuen Konvertierungstabelle dazu, dass diese Symbole nicht mehr korrekt dargestellt werden.
    D.h. aus einem ehemals in infra:NET eingegebenen Durchschnittszeichen wird dann ein anderes Symbol.
    Die Daten müssen entweder konvertiert oder manuell angepasst werden!
Beispiele anhand des kleinen Durchschnittszeichens < ø >:
Bei einer Tastatureingabe (z.B. im Systemeditor) mit <ALT+155> (0x9B) wird diese als ASCII-Eingabe interpretiert und nach 0xF8 (=248) konvertiert und im ISO-Fenster korrekt als kleines Durchschnittszeichen sichtbar. Bei einer Tastatureingabe von <ALT+0248> wird diese als ISO-Eingabe verstanden und ebenfalls (direkt) der Wert 0xF8 (=248) geliefert. In beiden Fällen erhält also das ISO-Fenster den Wert 0xF8. Eine Eingabe von <ALT+0155> dagegen würde z.B. das Zeichen „>“ liefern.
Schaut man die Datei mit dem kleinen Durchschnittszeichen in einem ASCII-Editor an, so sieht man das Zeichen < ° >.
Genau dieses Verhalten zeigt nun auch infra:NET mit der neuen Konvertierungstabelle beim Import- und Export von Daten!
infra:NET ohne die neue Konvertierungstabelle:
Die Tastatureingabe von <ALT+155> (0x9B) wird in diesem Fall zu 0xFC (=242) konvertiert und nicht wie oben zu 0xF8 (=248).
Hintergrund:
infra:NET speichert eingegebene Zeichen nicht im von Windows verwendeten ISO-Zeichensatz (in der Regel Codepage 1252), sondern wandelt Eingaben zunächst über eine Umwandlungstabelle in eine interne Codierung um, bevor diese in der Datenbank (intern oder SQL) gespeichert werden. Von der Umwandlung betroffen sind alle Zeichencodes > 127 (0x80).
Die Standard-Konvertierungsvorschrift in infra:NET benutzt die Vorschrift aus der GUI-Komponente (GRIT) und ist damit nicht vollständig kompatibel zu den üblichen ASCII-Zeichentabellen (CodePage 850/858 oder 437). Die Umlaute der deutschen Sprache werden korrekt abgebildet - andere Sonderzeichen (z.B. Durchschnitt, Quadrat, Euro, etc.) nicht. Wird in infra:NET eines dieser falsch abgebildeten Symbole eingegeben, kommt in der Datenbank (auch SQL) nicht das Äquivalent dieses Zeichens an, sondern ein anderes.
Solange ausschließlich mit infra:NET auf die Daten zugegriffen wird, ist das unproblematisch - die interne Konvertierungstabelle ist bijektiv, d.h. die Rückwärtsumwandlung eines Zeichens (z.B. bei der Druckausgabe oder Anzeige) führt wieder zum ursprünglich eingegebenen Zeichen.
Anders ist das, sobald Daten im sogenannten ASCII-Format importiert oder exportiert werden oder die Daten von anderen Anwendungen aus der SQL-Datenbank gelesen werden. Auch bei den in MIL- und INI-Dateien abgelegten Texten können Probleme auftreten, sobald eines der kritischen Zeichen (z.B. das Durchschnittszeichen) benutzt wird. In diesen Fällen gibt es keine Möglichkeit über einen Standard-ASCII-Editor oder ein externes Programm mit eigener standardisierter CodePage-Umwandlung das ursprünglich gewünschte Zeichen wieder herzustellen.
Das Problem kann mit der Umwandlungstabelle (CP858.CNV) behoben werden. Diese enthält eine standardisierte Umwandlung zwischen der CodePage 858 und der Windows CodePage 1252. Die CodePage 858 ist eine um das Euro-Symbol erweiterte Abart der weit verbreiteten CodePage 850. Für die SQL-Datenbank (Replikation und SQLpur) wird beispielsweise die CodePage 850 verwendet - d.h. mit der neuen Umwandlungstabelle werden in infra:NET eingegebenen Sonderzeichen (sofern sie von der DOS-CodePage 850 unterstützt werden) auch im SQL Enterprise-Manager oder Query Analyzer korrekt angezeigt.
Syntax der CNV-Datei
Die CNV-Datei besteht aus 2 Tabellen. Die Tabellen sind folgendermaßen aufgebaut:
  • Kommentarzeilen beginnen mit #.
  • Leerzeilen sind zulässig und werden nicht ausgewertet.
  • Jede Tabelle besteht aus 128 Zeichen. Jedes Zeichen ist hexadezimal dargestellt (z.B. c7 bedeutet 0xC7 und steht für dezimal 199).
  • Die erste Tabelle enthält die Konvertierungsvorschrift von ASCII nach ISO und die zweite Tabelle enthält die Konvertierungsvorschrift für ISO nach ASCII.
    Beide Tabellen müssen zueinander passen!
  • Die Tabellen können über mehrere Zeilen verteilt sein.
    Bei der Datei CP858.CNV wird jede Tabelle der Übersichtlichkeit halber in Blöcke zu zweimal 8 Zeichen mit anschließender Leerzeile aufgeteilt.
    In jedem Fall werden die ersten 128 Zeichen als Angaben für die erste Tabelle (ASCII nach ISO) ausgewertet und die nächsten 128 Zeichen als Angaben für die zweite Tabelle (ISO nach ASCII)
  • Das 1. Zeichen jeder Tabelle bildet die Konvertierungsvorschrift für das Zeichen 0x80 (dezimal 128).
    Das 2. Zeichen jeder Tabelle bildet die Konvertierungsvorschrift für das Zeichen 0x81  (dezimal 129) usw. bis zum 128. Zeichen jeder Tabelle für das Zeichen 0xFF (dezimal 255).
  • Beispiele:
    In der ersten Tabelle (ASCII nach ISO) steht als erstes Zeichen c7. Dies bedeutet, dass das ASCII-Zeichen 0x80 (Ç) in das ISO-Zeichen 0xC7 (Ç) konvertiert wird.
    In der zweiten Tabelle (ISO nach ASCII steht als viertes Zeichen 9f. Dies bedeutet, dass das ISO-Zeichen 0x83 (ƒ) in das ASCII-Zeichen 0x9F (ƒ) konvertiert wird.
     
Beispiel für türkische Schriftzeichen:
  • Darstellung am Bildschirm
    Damit infra:NET die türkischen Schriftzeichen korrekt darstellt, muss in den Dialogen (Eingabefelder, Anzeigefelder, Listen, etc.) ein türkischer Zeichensatz verwendet werden.
    Im Standard wird u.U. (je nach Systemkonfiguration) in infra:NET eine System-Schriftart ohne türkische Zeichen verwendet.
    In der Datei INDIVID.INI können Sie mit folgenden Einträgen die Verwendung eines türkischen Zeichensatzes (Font) erzwingen:
    [LAYOUT]
    FntDefault=8.Arial TUR
    FntScroll=8.Courier New TUR
    FntScrollTab=8.Arial TUR
    FntHint=8.Arial TUR
    FntShortHint=8.Arial TUR
    FntText=9.Arial TUR
    Sollten Sie in Ihrer INDIVID.INI noch weitere infra-Schriftarten geändert haben, sollten Sie dort nach obigem Muster statt "Arial" oder anderen Fonts die entsprechende türkische Ausprägung "Arial TUR" eintragen.
    Sollten die so eingestellten Schriftarten in den infra-Dialogen zu klein erscheinen, können Sie natürlich auch größere Schriften einstellen.
    Dazu statt der 8 oder 9 im obigen Muster größere Zahlen einsetzen.
  • Zeichenkonvertierung
    Das türkische Zeichen "i ohne Punkt" (Code 253) wird durch die Standard-infra-Zeichenumsetzung von ISO (Windows Zeichensatz) zur internen infra-Kodierung durch ein "ungünstiges" Zeichen ersetzt (interner Code 254).
    Dieser interne Code hat für infra:NET teilweise eine besondere Bedeutung und wird beim Druck (und teilweise bei der Bildschirmdarstellung) durch "*" (Stern) ersetzt.
    Das kann durch eine angepasste Zeichenumsetzungstabelle verhindert werden.
    Diese angepasste Zeichenumsetzungstabelle (TUERK.CNV) liegt im INI-Verzeichnis von infra:NET (z.B. C:\INFRA\GRAFIK\INI).
    Damit diese Datei von infra:NET verwendet wird, muss der Aufruf von infra:NET geändert werden. Abhängig davon, ob Sie infra:NET per Batch (BAT oder CMD-Datei) oder direkt über eine Windows-Verknüpfung aufrufen, müssen Sie entweder im Batch oder in der Verknüpfungseigenschaften dem aufzurufenden Programm SIBPPS.EXE folgenden Parameter mitgeben:
    CONVERSION=LW:\INFRA\GRAFIK\INI\TUERK.CNV
    Der Aufruf des infra-Programms sieht dann beispielsweise so aus:
    LW::\infra\grafik\modul\win32\sibpps.exe INIPATH=LW:\INFRA\GRAFIK\INI CONVERSION=LW:\INFRA\GRAFIK\INI\TUERK.CNV
    (LW: = Laufwerk der infra-Installation, beispielsweise "C:")
    Bitte beachten Sie dabei, dass die bereits vorhandenen Parameter nicht verändert werden.
    ACHTUNG!
    Grundsätzlich sollte auf jedem infra-Arbeitsplatz diese Änderung vorgenommen werden - d.h. wenn infra:NET nicht von jedem Arbeitsplatz aus über ein Batch gestartet wird, muss auf jedem Arbeitsplatz die Windows Verknüpfung um den Parameter CONVERSION erweitert werden.
    Hinweis
    Wurden bereits in den infra-Daten türkische Texte/Bezeichnungen eingegeben, die das problematische Zeichen enthalten, müssen diese Texte nach der o.g. Änderung bearbeitet und das gewünschte Zeichen (i) erneut eingegeben werden!
  • Druckausgabe
    Um letztendlich die türkischen Zeichen auch korrekt ausdrucken zu können, muss im Windows-System ein druckbarer türkischer Font installiert sein,
    der dann in der infra-Drucker- und Medienkonfiguration (oder den infra-Formularsteuerdateien MDD/MIL) bei den zu verwendenden Druckmedien auf der Registerseite "Seitenlayout" im Feld "Schrift (Font)" einzutragen ist.
    Die in Windows enthaltenen Fonts mit türkischer Unterstützung (z.B. "Arial TUR") funktionieren u.U. nicht bei der Druckausgabe mit infra:NET.
    Im Verzeichnis ..\SETUP\SYSFILES finden Sie 2 Windows Fonts ("Turkish Arial" und "Turkish Arial").
    Wichtig ist, dass Sie diese Fonts auch mit den infra-Druckmedien verwenden.