IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

[NLS] problème accents


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 32
    Points : 28
    Points
    28
    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?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Tu peux nous donner un exemple de mot qui ne fonctionne pas ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2003
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    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.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    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é.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    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")

Discussions similaires

  1. Problème accent mysql
    Par staive dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/02/2006, 19h11
  2. [C#] Problème accents avec HttpWebRequest
    Par aucean dans le forum C#
    Réponses: 2
    Dernier message: 03/12/2005, 14h40
  3. problème accent sous tomcat
    Par julien_lesbegueries dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 06/10/2005, 14h33
  4. [JDBC]Problème Accent MySQL depuis DB browser dans eclipse
    Par chpruvos dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/08/2005, 14h14
  5. [Zip] Problème accent et zip
    Par MrEddy dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/06/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo