Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle-Unicode-Spooling

Mit den richtigen Einstellungen funktioniert Ihr Skript mit SQL*Plus. Folgendes habe ich getan, um es zu testen:

  • (offensichtlich) muss Ihre Datenbank Unicode unterstützen. Verwenden Sie bei Bedarf NVARCHAR2.
  • Richten Sie Ihre Client-Anwendung korrekt ein. Stellen Sie sicher, dass Ihre NLS_LANG-Variable richtig eingestellt ist, sie muss Unicode unterstützen. Ich habe meine auf AMERICAN_ENGLISH.UTF8 gesetzt . Während das DOS-Fenster von SQL*Plus nicht alle Unicode-Zeichen anzeigt, werden sie korrekt in die Datei gespoolt.
  • Stellen Sie (natürlich auch) sicher, dass die Anwendung, die die Spooldatei liest, sie im richtigen Zeichensatz öffnet.

Nun zum Skript:

SQL> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET';

PARAMETER          VALUE
------------------ ------
NLS_CHARACTERSET   UTF8

SQL> create table street_points (data varchar2(10));

Table created

SQL> INSERT INTO street_points VALUES (chr(53401)||chr(53398));

1 row inserted

Dadurch werden die russischen Zeichen ЙЖ

eingefügt
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF

Die mit einem Texteditor (in meinem Fall jEdit) mit dem richtigen Zeichensatz (UTF-8) geöffnete Datei zeigt die Zeichen korrekt an.