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.