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 :

Encodage php oracle


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Encodage php oracle
    bonjour, j'ai un affichage de caractère spéciaux de ce genre � dans certaines données de ma page alors que j'ai encoder tous mes pages php et html en utf-8, et même mon éditeur Notepad aussi en Utf-8. je ne comprend pas alors pourquoi les données provenant d'une requête sur ma base de donnée oracle qui ont des caractères accentués ou autre sont remplacer par ce symbole �.
    alors que les autres caractères comportant les caractères accentués qui ne proviennent pas de ma base de données mais qui sont écrit dans du html sont afficher normalement.
    Aussi avec la bibliothèque FPDF j’exécute la même requête pour générer un Etat en PDF et sur cette page les mêmes données sont afficher correctement. alors que c'est du même php que j'utilise pour lancer la requete sur la BDD oracle a travers ODBC.
    ma préoccupation comment régler cela car j'ai parcouru pratiquement le net mais sans solution pour le moment .
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Visiblement ton ORACLE n'est pas en UTF8.
    Il faut peut etre voir par ici :
    http://fadace.developpez.com/oracle/nls/

    Par contre FPDF ne gère pas UTF8, tu auras donc le prolème inverse ensuite.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    bonjour, merci de votre réponse comment mettre ma base en UTF8. car avec la documentation fourni ici: http://fadace.developpez.com/oracle/nls/ je pense que mon serveur est bien configuré voici les paramètres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    PARAMETER                                 VALUE                                            
    ------------------------------------------         
    NLS_LANGUAGE                         AMERICAN                                         
    NLS_TERRITORY                         AMERICA                                          
    NLS_CURRENCY                           $                                                
    NLS_ISO_CURRENCY                   AMERICA                                          
    NLS_NUMERIC_CHARACTERS            .,                                               
    NLS_CHARACTERSET                  WE8MSWIN1252                                     
    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_NCHAR_CHARACTERSET            AL16UTF16                                        
    NLS_RDBMS_VERSION                  11.2.0.1.0
    et au niveau des paramètres locaux de ma session les voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    PARAMETER                                 VALUE                                            
    ------------------------------------------            
    NLS_LANGUAGE                             FRENCH                                           
    NLS_TERRITORY                             FRANCE                                           
    NLS_CURRENCY                               €                                                
    NLS_ISO_CURRENCY                        FRANCE                                           
    NLS_NUMERIC_CHARACTERS                ,                                                
    NLS_CALENDAR                            GREGORIAN                                        
    NLS_DATE_FORMAT                       DD/MM/RR                                         
    NLS_DATE_LANGUAGE                      FRENCH                                           
    NLS_SORT                                     FRENCH                                           
    NLS_TIME_FORMAT                     HH24:MI:SSXFF                                    
    NLS_TIMESTAMP_FORMAT                   DD/MM/RR HH24:MI:SSXFF                           
    NLS_TIME_TZ_FORMAT              HH24:MI:SSXFF TZR                                
    NLS_TIMESTAMP_TZ_FORMAT        DD/MM/RR HH24:MI:SSXFF TZR                       
    NLS_DUAL_CURRENCY                         €                                                
    NLS_COMP                                    BINARY                                           
    NLS_LENGTH_SEMANTICS                  BYTE                                             
    NLS_NCHAR_CONV_EXCP                   FALSE
    merci de votre aide

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Je ne saurais pas t'en dire plus sur ta configuration Oracle mais � c'est tout à fait ce qu'on obtient quand on affiche de l'ANSI sur une page Unicode.

    Tu peux faire un utf8_encode() pour le contrôler.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Question, je suis surpris de la présentation de ta session locale que tu affiches.
    Moi je crois que ton SELECT * FROM NLS_SESSION_PARAMETERS ; tu l'a fais depuis un client tier et non depuis ta session oracle ouverte par PHP.

    donc ce que tu affiches n'a pas de valeur.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    cette solution retardera l’exécution de mon programme sachant que la requête sql envoie de grandes données. n'est-il pas possible de résoudre le problème au niveau du serveur si c'est lui la cause.

  7. #7
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    si tu n'aimes pas ma question, ce que tu peux faire c'est forcer l'encodage en début de session...
    Dans le tuto de fadace ya un lien qui te permet de t'expliquer comment faire ta conversion de la base. ça dépasse ce que je suis capable d'expliquer ici.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par gene69
    Question, je suis surpris de la présentation de ta session locale que tu affiches.
    Moi je crois que ton SELECT * FROM NLS_SESSION_PARAMETERS ; tu l'a fais depuis un client tier et non depuis ta session oracle ouverte par PHP.

    donc ce que tu affiches n'a pas de valeur.
    je ne comprend pas bien votre question car c'est directement dans le sql plus j'ai faire cette requête pour obtenir ces informations. donc comment obtenir ces informations depuis une session oracle ouverte par php si c'est une requête depuis ma page php pour obtenir ces infos j'ai les mêmes infos en le faisant.
    c'est bien la session oracle ouverte par PHP:

    Citation Envoyé par gene69
    si tu n'aimes pas ma question, ce que tu peux faire c'est forcer l'encodage en début de session...
    Dans le tuto de fadace ya un lien qui te permet de t'expliquer comment faire ta conversion de la base. ça dépasse ce que je suis capable d'expliquer ici.
    ma reponse s'adressait a Sabotage et non a vous Gene69

  9. #9
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    ODBC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?
    $objConnect = odbc_connect("test","","") or die("Error Connect to Database");
    odbc_exec($objConnect, "SET NAMES 'UTF8'");
    odbc_exec($objConnect, "SET client_encoding='UTF-8'");
    OCI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php 
    $conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8'); 
    ?>
    La connexion ODBC PHP me parait un mauvais choix.

Discussions similaires

  1. PHP - Oracle
    Par alex007 dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 17h39
  2. PHP & MySQL => PHP & ORACLE , INTERVAL ?
    Par kailly dans le forum Oracle
    Réponses: 1
    Dernier message: 26/07/2005, 12h22
  3. PHP & Oracle distant : installation ?
    Par Grubshka dans le forum Oracle
    Réponses: 28
    Dernier message: 15/06/2005, 08h59
  4. PHP + Oracle + PL/ SQL
    Par bchristo dans le forum SQL
    Réponses: 12
    Dernier message: 28/04/2004, 15h49

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