przy odpowiednich ustawieniach Twój skrypt działa z SQL*Plus. Oto, co zrobiłem, aby to przetestować:
- (oczywiście) Twoja baza danych musi obsługiwać Unicode. W razie potrzeby użyj NVARCHAR2.
- Skonfiguruj poprawnie aplikację kliencką. upewnij się, że zmienna NLS_LANG jest ustawiona poprawnie, musi obsługiwać Unicode. Ustawiłem mój na
AMERICAN_ENGLISH.UTF8
. Podczas gdy okno DOS SQL*Plus nie wyświetli wszystkich znaków Unicode, zostaną one prawidłowo zbuforowane do pliku. - (oczywiście też) upewnij się, że aplikacja, która czyta plik buforowy, otwiera go we właściwym zestawie znaków.
Teraz scenariusz:
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
Spowoduje to wstawienie rosyjskich znaków ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Plik otwarty za pomocą edytora tekstu (w moim przypadku jEdit) z poprawnym zestawem znaków (UTF-8) wyświetla poprawnie znaki.