Malgré Metalink, je ne partage pas l'avis général de prendre le characterset Win pour un serveur Linux..., mais par contre, celui d'éviter le ISOP1...
Si avec un ISOP1, vous aviez effectivement un retour dans PHP d'un €, c'est que vous aviez déjà une double erreur de conversion et que le caractère en question était mal géré dans la base (puiqu'en P1, il n'y a pas de €) bien qu'il apparaisse correctement en retour.
En résumé, vous avez maintenant :
Sur le serveur Linux : jeu de caractère natif = iso_1 (je suppose ?)
Sur le serveur Oracle : jeu de caractère natif = AMERICAN_AMERICA.WE8ISO8859P1
Sur le client PHP : jeu de caractère natif = ANSI-Win
Sur le client Oracle : jeu de caractère natif = FRENCH_FRANCE.WE8MSWIN1252
Du moment que php retourne bien le jeu de caractère de Windows, on peut dire alors que votre configuration cliente est correcte. Pour vous en assurer, essayez de retourner via PHP l'output d'un
SELECT * FROM NLS_SESSION_PARAMETERS
Ensuite, via sqlplus sur Linux, effectuez la même opération pour bien déterminer ce que vous avez.
En dernier lieu, retournez-nous un
select * from NLS_DATABASE_PARAMETERS
Pour retrouver ce que vous aviez à la base, essayez d'utiliser le même NLS_LANG sur le client que sur le serveur. ce faisant, vous pousserez le servezr à ne pas faire de conversion... mais ce n'est pas la solution à envisager en finale.
Partager