5.01.2009

Accents français avec apache, linux et oracle

Au boulot, on a cherché longtemps avant de trouver la solution à notre problème sur les accents français qui ne s'affichaient pas dans les sites web roulant sur apache sur un OS linux. Selon le site d'Oracle:

"If you don't set the NLS_LANG on the client it uses the NLS_LANG of the server. This is also NOT true! For example, if the Oracle Installer does not populate NLS_LANG, and it is not otherwise set then its value by default is AMERICAN_AMERICA.US7ASCII. The language is AMERICAN, the territory is AMERICA, and the character set is US7ASCII."

Donc, par défaut, voilà pourquoi on avait les lettres sans l'accent (e au lieu de é et ainsi de suite). Je me doutais bien que la solution tournait autour de la variable d'environnement NLS_LANG (la valeur à mettre étant "
nls_lang = 'CANADIAN RENCH_CANADA.WE8MSWIN1252'"). Ayant essayé d'exporter la variable sur Linux sans succès, nous avions conclu que la solution n'était pas là. Or, nous étions dans l'erreur.

Comme notre charset de la bd est en win1252, on croyait que le problème venait de là. J'avais un doute puisque linux supporte l'installation d'une bd Oracle avec ce même charset. J'ai donc essayé une bd Oracle Xe avec un charset en UTF8 et, surprise, nous avons eu le même problème. Les accents n'apparaissaient pas encore.

C'est alors que j'ai parlé à mon collègue de la porté (l'étendue) de la variable d'environnement qu'il avait appliqué. Il l'avait exporter dans son compte utilisateur seulement. Or, Apache roule avec un compte implicite et avec ses propres variables d'environnement! Misère lol

Voici les étapes pour permettre l'affiche des accents français (cela s'applique aux autres langues également) sur Apache:
1. Ouvrir le fichier en root: /etc/apache2/envvars
2. Ajouté la ligne: export NLS_LANG="CANADIAN FRENCH_CANADA.WE8MSWIN1252"
3. Redémarrer apache avec: /etc/init.d/apache2 restart

En espérant que la solution en aide plus d'un.

2 commentaires:

XaV'S a dit...

Utf-8 sa existe pas dans Oracle ??

Maxime Dumont a dit...

Oui UTF8 existe dans Oracle.

Mes items partagés de Google Reader