Oracle
 sql >> Database >  >> RDS >> Oracle

Spooling Oracle Unicode

con le giuste impostazioni il tuo script funziona con SQL*Plus. Ecco cosa ho fatto per testarlo:

  • (ovviamente) il tuo database deve supportare unicode. Utilizzare NVARCHAR2 se necessario.
  • Configura correttamente l'applicazione client. assicurati che la tua variabile NLS_LANG sia impostata correttamente, deve supportare unicode. Ho impostato il mio su AMERICAN_ENGLISH.UTF8 . Sebbene la finestra DOS di SQL*Plus non visualizzi tutti i caratteri Unicode, verranno inseriti correttamente nello spooling nel file.
  • (anche ovviamente) assicurati che l'applicazione che legge il file di spool lo apra con il set di caratteri corretto.

Ora per lo script:

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

Questo inserirà i caratteri russi ЙЖ

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

Il file, aperto con un editor di testo (jEdit nel mio caso) con il set di caratteri corretto (UTF-8), visualizza i caratteri correttamente.