par
Ryle » 19 nov. 2006, 12:23
Bonjour,
J'ai quelques soucis de conversion de caractères entre mon serveur et ma base de données... c'est un sujet que j'avais déjà abordé, mais sans trouver de solution convenable. Je m'attaque à nouveau au problème suite à la découverte de cet
article sur les nls d'oracle, mais sans plus de succes.
Voici le problème :
- J'ai un serveur Win 2k, avec easyphp 1.8 (no comment), un site en php et un client oracle, dont le charset en base de registre est FRENCH_FRANCE.WE8MSWIN1252
- J'ai une base de données oracle sous unix, qui est installée en AMERICAN_AMERICA.WE8ISO8859P1
=> quand je saisie certains caractères spéciaux (genre euro, le caractère 3pts de word "…", le "œ", etc.) ceux-ci sont stockés dans la base sous forme de "¿" (#0191) au lieu de #164 pour l'euro (qu'il ne sait pas plus interpréter en WE8ISO8859P1, mais qu'il peut restituer quand php l'interroge). Or lorsque je les récupères, ils apparaissent donc tous sous la forme de points d'interrogations inversés...
Quand je fais un getenv() du NLS avec php, j'obtiens bien WE8MSWIN1252, donc celui du serveur, qui est en théorie transmis à oracle pour qu'il fasse la conversion avec son charset à lui.
Avant de me dire que "ce n'est pas possible" ou "qu'il faut réinstaler la base dans le bon charset" je tiens à préciser que cela fonctionne en dév, que cela fonctionnait sur le précédent serveur, qu'à priori il s'agit uniquement d'un problème de configuration, et que je n'arrive pas à trouver où (apache, php, windows, unix, oracle ?) ni quoi...
J'ai essayé de changer le nls avec un putenv sans succes (je ne sais pas lequel mettre soit dit en passant), en le spécifiant en variable d'environnement (je sais, c'est mal), j'ai parcouru la
FAQ d'oracle mais je suis un peu à court d'idée et je ne sais plus ou chercher
Merci d'avance pour toutes les idées ou suggestions que vous pourriez avoir

Bonjour,
J'ai quelques soucis de conversion de caractères entre mon serveur et ma base de données... c'est un sujet que j'avais déjà abordé, mais sans trouver de solution convenable. Je m'attaque à nouveau au problème suite à la découverte de cet [url=http://fadace.developpez.com/oracle/nls/]article sur les nls d'oracle[/url], mais sans plus de succes.
Voici le problème :
- J'ai un serveur Win 2k, avec easyphp 1.8 (no comment), un site en php et un client oracle, dont le charset en base de registre est FRENCH_FRANCE.WE8MSWIN1252
- J'ai une base de données oracle sous unix, qui est installée en AMERICAN_AMERICA.WE8ISO8859P1
=> quand je saisie certains caractères spéciaux (genre euro, le caractère 3pts de word "…", le "œ", etc.) ceux-ci sont stockés dans la base sous forme de "¿" (#0191) au lieu de #164 pour l'euro (qu'il ne sait pas plus interpréter en WE8ISO8859P1, mais qu'il peut restituer quand php l'interroge). Or lorsque je les récupères, ils apparaissent donc tous sous la forme de points d'interrogations inversés...
Quand je fais un getenv() du NLS avec php, j'obtiens bien WE8MSWIN1252, donc celui du serveur, qui est en théorie transmis à oracle pour qu'il fasse la conversion avec son charset à lui.
Avant de me dire que "ce n'est pas possible" ou "qu'il faut réinstaler la base dans le bon charset" je tiens à préciser que cela fonctionne en dév, que cela fonctionnait sur le précédent serveur, qu'à priori il s'agit uniquement d'un problème de configuration, et que je n'arrive pas à trouver où (apache, php, windows, unix, oracle ?) ni quoi...
J'ai essayé de changer le nls avec un putenv sans succes (je ne sais pas lequel mettre soit dit en passant), en le spécifiant en variable d'environnement (je sais, c'est mal), j'ai parcouru la [url=http://www.oracle.com/technology/tech/globalization/htdocs/nls_lang%20faq.htm]FAQ d'oracle[/url] mais je suis un peu à court d'idée et je ne sais plus ou chercher :(
Merci d'avance pour toutes les idées ou suggestions que vous pourriez avoir :)