con la configuración correcta, su secuencia de comandos funciona con SQL*Plus. Esto es lo que hice para probarlo:
- (obviamente) su base de datos debe ser compatible con Unicode. Use NVARCHAR2 si es necesario.
- Configure su aplicación cliente correctamente. asegúrese de que su variable NLS_LANG esté configurada correctamente, debe ser compatible con Unicode. Configuré el mío en
AMERICAN_ENGLISH.UTF8
. Si bien la ventana DOS de SQL*Plus no mostrará todos los caracteres Unicode, se colocarán correctamente en el archivo. - (obviamente también) asegúrese de que la aplicación que lee el archivo en spool lo abra con el juego de caracteres correcto.
Ahora el guión:
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
Esto insertará los caracteres rusos ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
El archivo, abierto con un editor de texto (jEdit en mi caso) con el juego de caracteres correcto (UTF-8) muestra los caracteres correctamente.