Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mise en file d'attente Oracle Unicode

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.