Introduction
Vous est-il déjà arrivé avec SQL*Plus sous Windows d'avoir des accents remplacés par des caractères spéciaux? Et, si oui, après avoir cherché sous Google comment résoudre cela, vous êtes-vous dit que les solutions proposées à base de NLS étaient incompréhensibles?

Si c'est le cas, lisez la suite car il se peut que ce ne soit pas un problème de NLS Oracle mais plutôt de code service Windows.



Points d'attention
N/A.



Base de tests
N'importe quelle base Oracle mais avec SQL*Plus sous Windows.



 
Exemples

Voici ce que j'obtiens quand je me connecte avec SQL*Plus sous WIndows 7 : les accents ne sont pas pris en compte.
         SQL> connect HR/HR@localhost:1521/base_plug05
         ERROR:
         ORA-12514: TNS : le processus d'Úcoute ne conna¯t pas actuellement le service
         demandÚ dans le descripteur de connexion

Pour résoudre le problème, sous SQL*Plus, faire un clic droit au niveau de la barre de menu, choisir Propriétés.
Canalblog DBA Oracle 016 01 Accents

Une fenêtre s'affiche, choisir l'onglet Police puis sélectionner la police "Lucida Console".
Canalblog DBA Oracle 016 04 Accents

Saisir ensuite, sous SQL*Plus, la commande "host chcp 1252" pour changer la page de codes active. Le mot clé "host" permet d'exécuter une commande du système d'exploitation (Windows dans notre cas) si on est sous SQL*Plus sans avoir à quitter SQL*Plus.
         SQL> host chcp 1252
         Page de codes active : 1252

Si on se reconnecte : bingo, les accents apparaissent!
         SQL> connect HR/HR@localhost:1521/base_plug05
         ERROR:
         ORA-12514: TNS : le processus d'écoute ne connaît pas actuellement le service
         demandé dans le descripteur de connexion

Et on peut même insérer et visualiser les données avec accents
         SQL> insert into test values ('bête');
         1 ligne créée.

         SQL> select * from test;
         NAME
         ----------
         bête
         bébé