Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & Oracle
PHP & Oracle Forum d'entraide sur Oracle avec PHP. Avant de poster -> FAQ Oracle et Cours Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/10/2007, 14h29   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 32
Points : 10
Points : 10
Par défaut [NLS] problème accents

Bonjour,

Je travaille en PHP4 avec une database 9i, j'ai des problèmes lors de l'insertion (depuis php) de valeurs lorsque celles-ci contiennent des accents.
J'exécute ces même requêtes au départ de sqlplus ou toad et là les accents fonctionne bien.

Je sais que je peux setter NLS_LANG mais je préférerai laisser la base comme elle est :

DATABASE
NLS_NCHAR_CHARACTERSET - AL16UTF16
NLS_LANGUAGE - AMERICAN
NLS_TERRITORY - AMERICA
NLS_CURRENCY - $
NLS_ISO_CURRENCY - AMERICA
NLS_NUMERIC_CHARACTERS - .,
NLS_CHARACTERSET - WE8ISO8859P15
NLS_CALENDAR - GREGORIAN
NLS_DATE_FORMAT - DD-MON-RR
NLS_DATE_LANGUAGE - AMERICAN
NLS_SORT - BINARY
NLS_TIME_FORMAT - HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT - DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT - HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT - DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY - $
NLS_COMP - BINARY
NLS_LENGTH_SEMANTICS - BYTE
NLS_NCHAR_CONV_EXCP - FALSE
NLS_RDBMS_VERSION - 9.2.0.8.0
INSTANCE
NLS_LANGUAGE - AMERICAN
NLS_TERRITORY - AMERICA
NLS_LENGTH_SEMANTICS - BYTE
NLS_NCHAR_CONV_EXCP - FALSE
SESSSION
NLS_LANGUAGE - AMERICAN
NLS_TERRITORY - AMERICA
NLS_CURRENCY - $
NLS_ISO_CURRENCY - AMERICA
NLS_NUMERIC_CHARACTERS - .,
NLS_CALENDAR - GREGORIAN
NLS_DATE_FORMAT - DD-MON-RR
NLS_DATE_LANGUAGE - AMERICAN
NLS_SORT - BINARY
NLS_TIME_FORMAT - HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT - DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT - HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT - DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY - $
NLS_COMP - BINARY
NLS_LENGTH_SEMANTICS - BYTE
NLS_NCHAR_CONV_EXCP - FALSE


Qq un aurait une idée?
Michael# est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 15h42   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Tu peux nous donner un exemple de mot qui ne fonctionne pas ?
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 15h47   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 32
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 32
Points : 10
Points : 10
Citation:
Envoyé par mathieu Voir le message
Tu peux nous donner un exemple de mot qui ne fonctionne pas ?
Par exemple éléphant.

Pour que cela fonctionne, je suis obligé de faire :
  • export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P15
  • Redémarrage de Apache

Après cela ça fonctionne.
Michael# est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2007, 01h52   #4
Invité de passage
 
Inscription : juin 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2
Points : 2
Points : 2
J'ai le même problème.

Voici une mise en situation :

- La base de données est la dernière version de Oracle Database 10g installée sur une machine linux.
- Le serveur Apache est installé sur une autre machine Sun Solaris (unix) et la version de php installée est la 4.3.
- Les clients accèdent l'application php (GLPI pour Oracle) à partir de postes Windows 2000.

L'application fonctionne nickel même pour les accents. Les accents s'affichent bien mais il ne sont pas stockés correctement dans la BD. Par exemple Écran dans la BD apparaît comme Â?cran ou quelque chose comme cela. Il est important que les accents soient stockés correctement dans la BD.

D'après ce que j'ai pu lire cela est du au fait que je n'ai pas le bon charset de spécifié lors de ma connection. Donc il y a double mauvaise convertion de charset lors de l'entrée et lors de la sortie ce qui fait que les accents s'affichent correctement dans l'application mais ne sont pas stockés correctement dans la BD.

Mon problème est le suivant la BD a un charset de FRENCH_FRANCE.AL32UTF8. Le serveur Apache a un charset de FRENCH_AMERICA.WE8ISO8859P1 et les clients windows 2000 servant à accéder à l'application on le charset fucké de Windows.

J'ai essayé autant :

oci_connect ($username, $password, $db, "FRENCH_FRANCE.AL32UTF8")

que

oci_connect ($username, $password, $db, "FRENCH_AMERICA.WE8ISO8859P1 ")

Mais rien n'y fait pourtant lorsque je fait phpinfo() il est bien indiqué que le serveur Apache est configuré avec un NLS de FRENCH_AMERICA.WE8ISO8859P1 alors en le spécifiant dans la connection la convertion vers le UTF8 devrait se faire correctement non ?

J'y perd mon latin avec ces histoires de charset donc si quelqu'un peut m'aider cela serait très apprécié.
MonstroMart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 16h52   #5
Invité de passage
 
Inscription : février 2008
Messages : 1
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2008
Messages : 1
Points : 1
Points : 1
Par défaut Charsets Oracle

Il faut utiliser (UTF8) :
oci_connect ($username, $password, $db, "AL32UTF8")
et non :
oci_connect ($username, $password, $db, "FRENCH_FRANCE.AL32UTF8")

ou encore (ISO) :
oci_connect ($username, $password, $db, "WE8ISO8859P15")
et non :
oci_connect ($username, $password, $db, "FRENCH_AMERICA.WE8ISO8859P15")
Pascal# est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h25.


 
 
 
 
Partenaires

Hébergement Web