met de juiste instellingen werkt je script wel met SQL*Plus. Dit is wat ik deed om het te testen:
- (uiteraard) uw database moet unicode ondersteunen. Gebruik indien nodig NVARCHAR2.
- Stel uw clienttoepassing correct in. zorg ervoor dat uw NLS_LANG-variabele correct is ingesteld, deze moet unicode ondersteunen. Ik heb de mijne ingesteld op
AMERICAN_ENGLISH.UTF8
. Hoewel het DOS-venster van SQL*Plus niet alle Unicode-tekens weergeeft, worden ze correct in het bestand gespoold. - (uiteraard ook) zorg ervoor dat de toepassing die het spoolbestand leest het in de juiste tekenset opent.
Nu voor het 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
Dit zal de Russische karakters invoegen ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Het bestand, geopend met een teksteditor (jEdit in mijn geval) met de juiste tekenset (UTF-8) geeft de tekens correct weer.