|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
Bonjour.
Je viens de migrer mon ensemble Apache 2.2.6 / PHP 5.2.3 vers Apache 2.2.18 / PHP 5.3.6. Et là, oh surprise, les caractères spéciaux ne sont plus gérés correctement. Lorsque je consulte les données dans la base MySQL, pas de soucis. Mais lorsque je demande à mes scripts PHP d'afficher le résultat des requêtes SQL, j'ai n'importe quoi. Je ne comprends pas ce qui s'est passé. |
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
L'encodage de ta base de données a du changer.
Si tu obtiens des é la base fourni de l'UTF8 et toi tu affiches en ISO Si tu obtiens des �, c'est l'inverse. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
L'encodage par défaut a peut être changé et l'encodage à utiliser n'est pas spécifié dans tes scripts php ?
Tu dis que cela affiche n'importe quoi, mais quoi par exemple ?
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
Par exemple j'ai des é à la place des é.
Je ne précise aucun encodage dans mes pages HTML. Le jeu de caractère pour MySQL est a priori UTF-8 et ça n'a pas changé (je n'ai pas fait de mise à jour de ce côté-ci). |
|
|
00
|
|
|
#5 | |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Citation:
|
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Pour passer en utf-8 il y a pas mal de tutos. Par exemple un premier ici.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
10
|
|
|
#7 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
J'ai ajouté la balise
Code :
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> |
|
|
01
|
|
|
#8 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
|
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
Ce n'est pas mieux en encodage utf-8. En fait j'ai écrit dans un fichier de logs ce que le script PHP reçoit de la base de données : ça n'est déjà pas bon. J'ai l'impression que c'est au niveau de l'exécution de la requête que ça coince.
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Tu as lu le tuto que je t'ai mis en lien ?
Essayes de mettre SET NAMES "utf8"; avant ta requête.
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
sous mysql utilise mysql_set_charset
sous mysqli utilise mysqli_set_charset sous pdo_mysql utilise le parametre charset dans le dsn (PHP 5.3.6) ou fait un SET NAMES (mais c'est pas le même effets)
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#12 | |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Citation:
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
|
01
|
|
|
#13 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
c'est surtout que les fonctions là agissent en interne sur les autres (pour mysql_real_escape_string par exemple, qui ducoup prend le bon charset alors qu'avec SET NAMES il sera pas prit en compte)
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Citation:
Pour le reste je savais que ces fonctions étaient recommandées par rapport à SET NAME mais je ne savais pas exactement pourquoi. Merci de la précision
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
Bon, si je résume ce que j'ai compris, il faut que j’homogénéise mes jeux de caractères entre ma base de données, mes scripts et mes pages Web.
Du coup, deux questions :
|
|
|
00
|
|
|
#16 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
il faut bien mettre tout tes table en utf-8, ainsi que tes entete html (content-type/charset) et aussi tes fichiers doivent être en utf-8 (a régler dans ton éditeur), pour finir ton serveur doit envoyer les en tetes de pages en utf-8 tu dois aussi faire comme AB t'as dis au niveau de ta connexion mysql, si tu respecte tout ça tu n'aura plus de probleme d'encodage et tu seras dans la "norme" actuelle
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() Inscription : septembre 2010 Messages : 1 242 ![]() |
Je rejoins stealth35, pendant que tu te penche sur l'encodage autant utiliser la norme actuelle qui est l'utf-8. D'ailleurs pas mal de fonction php requièrent l'utf8 comme json_encode etc
Et puis même si tes sites sont en français ça te permet de mélanger plusieurs langues dans un même document, ce qui te permettra donc de dire que bonjour s'écrit こんにちは en japonais
__________________
- Réalisations - Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical. |
|
|
11
|
|
|
#18 |
|
Membre du Club
![]() Inscription : décembre 2003 Messages : 198 ![]() |
Bon. Je pense avoir suivi toutes les étapes du tuto mentionné plus haut :
|
|
|
00
|
|
|
#19 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Tu as changé l'encodage de mysql ? Tu as essayé avec SET NAMES ?
|
|
|
00
|
|
|
#20 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
le charset c'est uniquement à partir de la 5.3.6 (en espérant que t'as la bonne version)
__________________
http://blog.stealth35.com/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com