probleme d'encodage utf8 versus iso8859 (php/apache/mysql)

hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008 - 3 juin 2008 à 16:11
hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008 - 3 juin 2008 à 19:42
os : mandriva spring 2008
navigateur: firefox 2.0.0.14
php: 5
apache : 2.2.8
mysql 5.0.51

bonjour,

 je suis confronté à un probleme d'encodage .
 dans la base de donnée mysql les données sont encodées en UTF8_unicode_ci .

 a)lorsque dans mozilla->affichage->encodages des caracteres: je choisis unicode utf-8 .
        - j'ai des problemes d'affichage avec les caractères accentués venant de la base de donnée mysql ,mais pas
          de probleme avec les caractères accentués venant du code php
 b)lorsque dans mozilla>affichage->encodages des caracteres: je choisis Occidental (ISO-8859-1) .
      - je n'ai pas de probleme d'affichage avec les caractères accentués venant de la base de donnée mysql ,mais
        j'ai  des  problemes avec les caractères accentués venant du code php

question : Comment faire pour avoir aucun probleme d'affichage pour les caracteres accentués aussi bien pour ceux qui viennent de la base de donnée et que de ceux du code php

Merci 

7 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
3 juin 2008 à 16:21
Bonjour.
Dans ton fichier php, rajouter une ligne de header pour mettre l'encodage latin1.
Pour te caractère unicode de ta base de données, utilises la fonction unicode_decode.

Cdt
0
hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008
3 juin 2008 à 17:13
pour l'ajout du header c'est fait mais ça ne change rien .Toujours le même problème
pour la fonction : string utf8_decode(<tt class="parameter">$input</tt>
)

j'ai un petit probleme , j'ai essayé le code suivant :
 
                                   $uuu=(string)$row[$j];
                                   $aaa=utf8_decode($uuu);
                                   echo $aaa;

ça me fait planter l'affichage des données (qui sont sous forme de tableau ) .
     
          c'est la ligne    " $aaa=utf8_decode($uuu); "  qui fait planter  car   quand je l'enleve , l'affichage redevient normal .  J'ai essayé avec utf8_encode  , encode_decode  etc ça fait planter .apparement c'est la fonction qui pose probleme , j'ai lu ça dans l'aide php :

  
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
3 juin 2008 à 17:37
(re)Bonjour
utf8_decode()
fonctionne avec une variable de type "string",
si tu lui passe un tableau, c'est peut etre normal qu'il ne fonctionne pas correctement.
As tu regardé les commentaires sur le site http://fr.php.net/manual/fr/function.utf8-decode.php ?
0
hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008
3 juin 2008 à 17:48
peut importe le type de $row[$j]  je le transforme  en string avec   (string )$row[$j]

mais ce n'est pas ça qui fait planter , car même en ajoutant un if else pour vérifier le type  ça  plante au moment de l'utilisation de la fonction utf8_decode() . C'est apparement utf8_decode() et tout les fonctions encode decode qio font planter au moment de l'execution . Il y aurait pas un include quelque part à mettre pour que ces fonctions fonctionnent correctement ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
3 juin 2008 à 18:02
Il faut que l'extension xml soit installé pour utiliser la fonction utf8_decode

Cdt
0
hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008
3 juin 2008 à 18:42
  ... il semblerait que l'extension soit déjà installée (pas sûr ) ... mais bon je baisse les bras pour ces problèmes d'encodages de caractères  . trop dur pour moi
0
hybride11 Messages postés 13 Date d'inscription mercredi 14 mai 2008 Statut Membre Dernière intervention 11 juin 2008
3 juin 2008 à 19:42
    J'AI TROUVÉ !!!! 

    pour que les utf8_decode encode fonctionnent , après installation de tout un tas de php_xml via le centre de gestion des logiciels de mandriva , il fallait apparement que je redemarre apache (pas sûr  car j'ai bidouillé dans tout les sens et ne je sais pas ce qui a fait que... )

  ensuite les deux lignes à ajouter dans le programme :
i)au tout début du premier fichier  :
 header('Content-type: text/html; charset=UTF-8');
ii)  et au moment de l'affichage il faut utiliser utf8_encode():
echo utf8_encode($row[$j]) ; 

 alors me demandait pas la logique je serais incapable de répondre .du moment que ça marche
0
Rejoignez-nous