med rätt inställningar fungerar ditt skript med SQL*Plus. Det här är vad jag gjorde för att testa det:
- (uppenbarligen) din databas måste stödja unicode. Använd NVARCHAR2 vid behov.
- Konfigurera din klientapplikation korrekt. se till att din NLS_LANG-variabel är korrekt inställd, den måste stödja unicode. Jag ställer in min till
AMERICAN_ENGLISH.UTF8
. Även om DOS-fönstret i SQL*Plus inte visar alla unicode-tecken, kommer de att spoolas in korrekt i filen. - (uppenbarligen också) se till att programmet som läser den spoolade filen öppnar den med rätt teckenuppsättning.
Nu till skriptet:
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
Detta kommer att infoga de ryska tecknen ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Filen, öppnad med en textredigerare (jEdit i mitt fall) med rätt teckenuppsättning (UTF-8) visar tecknen korrekt.