Zurück

NLS-Einstellungen auf Windows / Unix für EE8ISO8859P2

Die Inbetriebnahme von Applikationen in osteuropäischen Ländern wie Polen bietet oft Probleme, indem die länderspezifischen Zeichen nicht korrekt am Bildschirm dargestellt werden. Dabei reicht es meistens nicht aus nur die Windows Einstellungen einzustellen, vielmehr muss der gesamte Ablauf zwischen der Bildschirmdarstellung und der Oracle Datenbank richtig eingestellt werden. Die folgende Anleitung für Polen dient dazu als Beispiel, für osteuropäische Länder muss grundsätzlich der EE8ISO8859P2 Zeichensatz gewählt werden.

1). Font (Schritt-1)

Als erstes muss ein Font gewählt werden, der die Zeichen codieren kann. Dies war unter OSF/Motif-Unix oft ein Problem. Wenn man einen 7-Bit Font verwendet, können die Zeichen nicht dargestellt werden. Die Zeichen müssen beim Eintippen also grundsätzlich am Bildschirm erscheinen, ansonsten muss auf einen andern Font gewechselt werden.

2). Betriebssystem (Schritt-2)

Das Betriebssystem muss den entprechenden Zeichensatz zur Verfügung stellen. Man muss also das entsprechende Windows-NT installieren. Als MDN Mitglied (Microsoft Developer Network) kennt man dies ja, da wird man alle 2 -3 Monate mit einem Stapel CD's beglückt mit koreanischem schwedischen, japanischem, etc Windows-NT. Ist also das korrekte Windows-NT installiert worden ?

3). Betriebsystem-Einstellungen (Schritt-3)

Damit wird der NT-Zeichensatz und weitere Kenngrössen wie Datumsdarstellungen definiert. Windows-NT benutzt ja bekanntlich ein Codepage-XXX Zeichensatz.

Beispiel für Polen auf Windows-NT 3.5

regional_settings.gif (8261 Byte)

4). SQL*Net / Oracle-Client Einstellungen (Schritt-4)

Sowohl unter UNIX wie auch unter Windows wird die Zeichensatz Konvertierung für jeden Oracle-Client (zB SQL*Plus, PPB-Customer) festgelegt. Unter Unix und NT wird dazu die Environmentvariable NLS_LANG gesetzt.

Unix

Windows-NT

NLS_LANG=POLISH_POLAND.EE8ISO8859P2
export NLS_LANG

In der Registry wird NLS_LANG gesetzt, um diesen Wert zu setzen benutzt man den Registry Editor (regedt32.exe), NLS_LANG findet man unter:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\NLS_LANG

Der Wert wird wie folgt gesetzt:

POLISH_POLAND.EE8ISO8859P2

5). Oracle-Datenbank (Schritt-5)

Die Datenbank selbst speichert die Zeichen im Charactersatz der beim Create Database angegeben wurde:

  CREATE DATABASE PPB
        CONTROLFILE     REUSE
        MAXDATAFILES    256
        MAXINSTANCES    4
        MAXLOGFILES     62
        MAXLOGMEMBERS   3
        MAXLOGHISTORY   1600
        CHARACTER SET   "EE8ISO8859P2"
        DATAFILE  '/data/ppb/db1/PPB_sys_1.dbf' SIZE 100M REUSE
        AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
   LOGFILE GROUP 1 ('/data/ppb/db1/PPB_log1A.rdo',
                    '/data/ppb/db1/PPB_log1B.rdo') SIZE 5M REUSE,
           GROUP 2 ('/data/ppb/db1/PPB_log2A.rdo',
                    '/data/ppb/db1/PPB_log2B.rdo') SIZE 5M REUSE;

Die aktuellen Settings können mit folgendem Query ermittelt werden:

SQL> select name,substr(VALUE$,1,20) from sys.props$;
NAME                           SUBSTR(VALUE$,1,20)
------------------------------ --------------------
DICT.BASE                      2
NLS_LANGUAGE                   POLISH
NLS_TERRITORY                  POLAND
NLS_CURRENCY                   $
NLS_ISO_CURRENCY               POLAND
NLS_NUMERIC_CHARACTERS         .,
NLS_DATE_FORMAT                DD-MON-YY
NLS_DATE_LANGUAGE              AMERICAN
NLS_CHARACTERSET               EE8ISO8859P2
NLS_SORT                       BINARY
NLS_CALENDAR                   GREGORIAN
NLS_RDBMS_VERSION              7.3.3.0.0
GLOBAL_DB_NAME                 PPB.WORLD
EXPORT_VIEWS_VERSION           3