avec les bons paramètres, votre script fonctionne avec SQL*Plus. Voici ce que j'ai fait pour le tester :
- (évidemment) votre base de données doit prendre en charge Unicode. Utilisez NVARCHAR2 si nécessaire.
- Configurez correctement votre application cliente. assurez-vous que votre variable NLS_LANG est correctement définie, elle doit prendre en charge Unicode. J'ai défini le mien sur
AMERICAN_ENGLISH.UTF8
. Bien que la fenêtre DOS de SQL*Plus n'affiche pas tous les caractères Unicode, ils seront correctement mis en file d'attente dans le fichier. - (évidemment aussi) assurez-vous que l'application qui lit le fichier spoule l'ouvre dans le bon jeu de caractères.
Passons maintenant au 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
Cela insérera les caractères russes ЙЖ
SQL> SPOOL STREET_POINT_THR.BQSV
SQL> SELECT * FROM STREET_POINTS;
ðÖðû
SQL> SPOOL OFF
Le fichier, ouvert avec un éditeur de texte (jEdit dans mon cas) avec le bon jeu de caractères (UTF-8) affiche correctement les caractères.