с правилните настройки вашият скрипт работи със SQL*Plus. Ето какво направих, за да го тествам:
- (очевидно) вашата база данни трябва да поддържа unicode. Използвайте NVARCHAR2, ако е необходимо.
- Настройте правилно клиентското си приложение. уверете се, че вашата променлива NLS_LANG е зададена правилно, тя трябва да поддържа unicode. Зададох моя на
AMERICAN_ENGLISH.UTF8
. Въпреки че прозорецът на DOS на SQL*Plus няма да показва всички символи в уникод, те ще бъдат спулирани правилно във файла. - (очевидно също) уверете се, че приложението, което чете буферния файл, го отваря в правилния набор от знаци.
Сега за скрипта:
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
Това ще вмъкне руските символи ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Файлът, отворен с текстов редактор (jEdit в моя случай) с правилния набор от знаци (UTF-8), показва символите правилно.