Gibt es Nachteile bei der Verwendung von UTF8 in einer Oracle-Datenbank?

7

Wir installieren die Bestellung einer konfigurierten Oracle-Datenbank und sie fragen uns, welche Zeichenkodierung wir haben möchten. Die Anwendung (in Java) ist nur in Englisch verfügbar, die Benutzer stammen jedoch aus verschiedenen Teilen der Welt.

Gibt es Gründe dafür, UTF8 oder einen anderen Unicode-Zeichensatz NICHT zu verwenden?


quelle

Antworten:

6

Sie sollten zwei Möglichkeiten haben:

  1. Wählen Sie Ihren Datenbank - Zeichensatz (verwendet von VARCHAR2, CHAR, CLOBDatentypen).
  2. Wählen Sie Ihren nationalen Zeichensatz (verwendet von NVARCHAR2, NCHAR, NCLOBDatentypen).

Wie hier zu sehen :

Oracle empfiehlt die Verwendung von Unicode für alle neuen Systembereitstellungen.

Nationale Zeichensätze können nur Unicode sein: UTF-8 oder UTF-16. Die Wahl des gleichen Zeichensatzes für beide wäre also überflüssig ...

Mein Rat (Sie sagen, Ihre Bewerbung ist nur auf Englisch):

  • Fragen Sie nach Ihrem Datenbankzeichensatz UTF-8.
  • Fragen Sie nach Ihrem nationalen Zeichensatz UTF-16.

Und hier ist mein allgemeiner Rat für Ihre Schemadefinition. Tabelle für Tabelle, Spalte für Spalte (ich nehme hier die VARCHAR2/ NVARCHAR2Probe):

  • Wenn Ihre Spalte ein Zeichen auf der Welt enthalten könnte (wie bei Benutzereingaben ), machen Sie es NVARCHAR2.
  • Wenn Sie die Kontrolle darüber haben, was gespeichert werden soll (dann Englisch), machen Sie es VARCHAR2.
Mac
quelle
Ich werde weitere Links hinzufügen, sobald ich Zugriff auf die Oracle-Dokumente habe (die Website ist derzeit nicht verfügbar).
Mac
Die Oracle-Site ist aktiv und das Lesen der Dokumentation hat mich dazu gebracht, meine Antwort leicht zu ändern ...
Mac
9

Aber achten Sie auf :

Verwenden Sie den Zeichensatz UTF8 nicht als Datenbankzeichensatz, es sei denn, dies ist für die Kompatibilität mit Oracle Database-Clients und -Servern in Version 8.1.7 und früheren Versionen erforderlich oder wird von Ihrem Anwendungsanbieter ausdrücklich angefordert. Trotz eines sehr ähnlichen Namens ist UTF8 keine ordnungsgemäße Implementierung der Unicode-Codierung UTF-8. Wenn der UTF8-Zeichensatz verwendet wird, bei dem eine UTF-8-Verarbeitung erwartet wird, können Datenverlust und Sicherheitsprobleme auftreten. Dies gilt insbesondere für webbezogene Daten wie XML- und URL-Adressen.

Oracle empfiehlt AL32UTF8 als Datenbankzeichensatz. AL32UTF8 ist der Name von Oracle für die UTF-8-Codierung des Unicode-Standards.

Rob van Laarhoven
quelle
Vielen Dank. Zum Glück war AL32UTF8 das, was sie vorgeschlagen haben. :-)
2

Gibt es Gründe dafür, UTF8 oder einen anderen Unicode-Zeichensatz NICHT zu verwenden?

Nur der eine; Sie haben einen vorhandenen Datensatz, für den Sie die aktuelle Zeichensatzcodierung nicht garantieren können.

In diesem Fall möchten Sie wahrscheinlich Abhilfe schaffen und trotzdem UTF8 verwenden.

Dan Carley
quelle
1

Nein überhaupt nicht.

Jan Jungnickel
quelle
0

Ein halber Witz: Ja, Sie können keine Verbindung mehr zu alten Clients herstellen, die UTF nicht kennen.

Slovon
quelle