5 Stimmen

oracle und i18n-Unterstützung

Wir haben die Anforderung, Char-Daten in verschiedenen Sprachen im selben Datenbankschema zu speichern. Oracle 10g ist unsere DB. Ich hoffe, dass jemand, der dies bereits getan hat, mir genauere Anweisungen geben kann, wie man eine Oracle 10g-DB für i18n aktiviert. Wir müssen nur die Daten aus mehreren Sprachumgebungen speichern und die Kollation (ich hoffe, dass alle großen Datenbanken dies unterstützen) auf Datenbankebene unterstützen. Wir brauchen keine Formatierung von Daten, Datumsangaben, Zahlen, Währungen usw.

Ich habe einige Dokumentation über Oracles i18n-Unterstützung gelesen, aber etwas verwirrt über ihre vielen nls_*-Eigenschaften. Sollte ich nls_lang oder nls_language oder NLS_CHARACTERSET..... verwenden?

6voto

Justin Cave Punkte 220606

Vorausgesetzt, dass Sie die Datenbank von Grund auf neu erstellen und nicht versuchen, eine bestehende Datenbank nachzurüsten, was andere Probleme mit sich bringt.

In der Datenbank müssen Sie sicherstellen, dass der Zeichensatz der Datenbank alle Zeichen unterstützt, die Sie speichern wollen. Vermutlich bedeutet das, dass Sie den NLS_CHARACTERSET der Datenbank auf AL32UTF8 setzen müssen. Ich persönlich ziehe es vor, auch NLS_LENGTH_SEMANTICS auf CHAR zu setzen. Dadurch wird das Standardverhalten von VARCHAR2(n) dahingehend geändert, dass n Zeichen anstelle von n Byte Speicherplatz zugewiesen werden. Da es sich bei AL32UTF8 um einen Zeichensatz mit variabler Länge handelt, ist die Verwendung der Byte-Semantik im Allgemeinen problematisch, da man entweder Felder deklarieren muss, die dreimal so lang sind, und am Ende verschiedene Benutzer eine unterschiedliche Anzahl von Zeichen in dasselbe Feld eingeben können.

NLS_LANG ist eine Client-Einstellung. Sie gibt den Zeichensatz an, in den der Client die Daten umwandeln will. Dies hängt im Allgemeinen von der Codepage des Betriebssystems ab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X