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 :

PHP 5.3 problème d'encodage


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut PHP 5.3 problème d'encodage
    Bonjour,

    Suite à une mise à jour de PHP pour passer de php 5.2 à 5.3 j'ai du changer les drivers pour se connecter à sql server 2008 car ceux que j'utilisais (
    http://php.net/manual/es/ref.pdo-dblib.php) ne sont pas compatible avec php 5.3


    J'ai donc pris les drivers sqlsrv http://www.php.net/manual/fr/ref.pdo-sqlsrv.php .

    Bon jusque la tout va bien, sauf que maintenant dès qu'il y a un accent ou caractère un minimum spécial je me prend l'erreur ci-dessous, sachant que mon php.ini est en "default_charset = "iso 8859-1" et mes pages web également


    exception 'PDOException' with message 'SQLSTATE[IMSSP]: An error occurred translating the query string to UTF-16: Il n'y a pas de caractère correspondant au caractère Unicode dans la page de codes multi-octet cible.
    Si j'encode avec utf8_encode et décode avec utf8_decode ça passe, mais le problème est que je ne peux pas modifier tous le code et je ne trouve aucun moyen de changer cet encodage par défaut ...

    D'où ma question, comment je peux résoudre ce problème ?

    Merci d'avance

  2. #2
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Bonjour,

    Et sous sql_server, tu peux pas modifier l'encodage de la base de données. Je sais que tu peux le faire avec mysql à partir de phpMyAdmin (en sauvegardant les données puis en les restaurants car lors du changement de l'encodage il ne sera effectif que sur les nouvelles données de la base.)
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut
    Ce qui me parait le plus étrange c'est que l'encodage de la base de donnée n'a pas l'air d'avoir changé mais seulement l'encodage de ce qui m'est retourné lors de mes requêtes

    J'ai également des soucis au niveau des nombre, avant 19.0 m'était retourné tel quel, maintenant j'ai le droit à 19.00000...

    Mais ce n'est pas tout, par exemple des select avec SCOPE_IDENTITY() qui avant marchait très bien maintenant retournes des erreurs, et je ne pense pas avoir tout découvert ...

  4. #4
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Elle est en quoi ta base de données ?
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut
    Bon, ce que je disais avec utf8_encode n'est pas vrai ...

    Je ne vois aucune solution pour mettre un accent en bdd et le récupérer en effet :

    Si je le mets tel quel : passe pas erreur encoding blablabla

    Si je fais utf8_encode(é) ça passe, mais si je requete après il faut que je fasse utf8_decode(utf8_decode(é)) car encodé une première fois par moi même, une deuxième fois par la bdd quand elle me retourne le résultat

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Fench Voir le message
    Elle est en quoi ta base de données ?
    Je pense qu'elle est en iso 8859-1, je vais regarder (On regarde ou d’ailleurs ? sur SQL Server 2008 R2)

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut
    Bon ma bdd à l'air d'être en iso 8859-1, la requête ci-dessous m'indique que mes type sont en iso_1 (varchar, text, char ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select data_type, character_set_name, count(*) count
    from information_schema.columns
    group by data_type, character_set_name;

  8. #8
    Membre expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Points : 3 390
    Points
    3 390
    Par défaut
    Tu as regardé du côté de 'sqlsrv_connect' pour mettre du charset utf8 ...

    genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $conn = sqlsrv_connect('MyServer', array('CharacterSet'=>'UTF-8', 'Database'=>'MyDatabase', 'UID'=>'MySqlUserId', 'PWD'=>'MyPassword') );
    A developper
    Meuuh en AI à l'INRA
    Domaines: {java, php, js, jquery}{hibernate, doctrine}{MyLib, symfony, Zend}
    fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes (balise à cliquer en bas de l'écran)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Juin 2012
    Messages : 15
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setAttribute(PDO::SQLSRV_ENCODING_UTF8 );
    ça à l'air de fonctionner pour les mise en base de donnée, mais je récupère toujours les données en UTF8

Discussions similaires

  1. [Oracle] problème d'encodage Oracle <-> PHP
    Par matoon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/11/2010, 17h36
  2. Problème d'encodage des sorties php.
    Par ithurts dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 05/05/2010, 00h57
  3. [PHP/MySQL] Problème d'encodage
    Par ymoreau dans le forum Outils
    Réponses: 13
    Dernier message: 11/01/2007, 12h08
  4. [PHP] Probléme d'encodage
    Par bouazza92 dans le forum Langage
    Réponses: 8
    Dernier message: 02/10/2006, 11h55

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