med de rigtige indstillinger virker dit script med SQL*Plus. Her er, hvad jeg gjorde for at teste det:
- (naturligvis) din database skal understøtte unicode. Brug NVARCHAR2 om nødvendigt.
- Konfigurer din klientapplikation korrekt. sørg for, at din NLS_LANG-variabel er indstillet korrekt, den skal understøtte unicode. Jeg indstillede mit til
AMERICAN_ENGLISH.UTF8
. Selvom DOS-vinduet i SQL*Plus ikke viser alle unicode-tegn, vil de blive spoolet korrekt ind i filen. - (selvfølgelig også) sørg for, at den applikation, der læser den spoolede fil, åbner den i det rigtige tegnsæt.
Nu til scriptet:
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
Dette vil indsætte de russiske tegn ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Filen, åbnet med en teksteditor (jEdit i mit tilfælde) med det korrekte tegnsæt (UTF-8) viser tegnene korrekt.