|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
Bonjour,
J'ai un petit problème d'encodage entre PHP et MySQL. Dans une class, j'ai ceci : Code :
Tous les fichiers sont en UTF-8 sans BOM, la base et en UTF-8 et j'ai même ajouter un SET NAMES UTF-8. Lorsque je test se SELECT directement sous MySQL, cela fonctionne très bien. petite précision, cette classe est appelé en ajax. Merci d'avance Yasen77 |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
en mysql c'est UTF8 pas UTF-8
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
Oui, effectivement.
dans le code, il est bien taper. c'est pour cela que je ne comprend pas se problème d'encodage. |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
'ton serveur envoie bien la page en utf-8 ? (firefox -> clique droit -> informations sur la page -> Encodage)
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
oui, et php.ini est configurer avec
|
|
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 34 ![]() |
Bonjour yasen77,
Vérifie encore 2 choses :
Cdlt. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Bonjour.
Une chose est à savoir. En PHP, nombre de fonction renvoient par défaut de l'ISO. Par conséquent il est souvent nécessaire de traiter l'encodage des résultats de tes traitements via la fonction utf8_encode ou mb_convert_encoding. C'est très casse-... et devrait (j'espère) être réglé avec PHP 6 qui utilisera l'UTF8 en natif.
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|
|
01
|
|
|
#8 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
J'ai tester utf8_encode et utf8_decode, et ça résout mon problème en partie.
Le problème et que cela me génère le problème à un autre endroit qui utilise cette requête aussi. en gros, sans utilisé UTF8_decode ou utf8_encode, lorsque j'utilise cette requête dans ma page courante, aucun problème, lorsque j'utilise cette requête en asynchrone avec ajax, le problème d'encodage apparait et provoque l'erreur. Le Header ne change rien. |
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Citation:
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
c'est la ou ça devient tordu, en réponse de retour, je n'est qu'un chiffre, 1 si c'est OK, 2 si c'est pas bon. Donc pas besoin d'encodage.
Pour voir d’où venais le problème, j'ai utilisé le débogueur de netbeans avec xdebug. |
|
|
00
|
|
|
#11 | |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Citation:
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|
|
|
00
|
|
|
#12 | ||||
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
appel un exorciste.
voici du code supplémentaire au cas ou. la fonction ajax : Code :
Code :
|
||||
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Dans ta fonction post_value($valeur), rajoute une clause du type
Code :
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
||
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
Aucun changement, le problème n'apparait pas sur les valeurs poster mais sur le retour de la requête sql, en effet dans la requête SELECT, on génère 2 champs supplémentaire virtuel qui commence avec le caractère £ et c'est se caractère qui pose problème.
|
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Citation:
Il est vrai que je n'ai pas pour habitude de mettre des caractères non ANSI comme noms de champs, fussent ils temporaires. Question bête: pourquoi ne redresse tu pas les noms avec la clause que je t'ai donné ci-dessus à la sortie de ta classe SQL ?
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|
|
|
00
|
|
|
#16 |
|
Membre habitué
![]() Développeur Web Inscription : mars 2007 Messages : 112 ![]() |
Vu les délai de contrainte, je suis dans l'obligation de tout passé en ISO-8859-1. On sait que ça fonctionne dans cette encodage.
Merci beaucoup pour vos aident. PS: je testerai au passage à PHP6 |
|
|
00
|
|
|
#17 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
ah lesquelles ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#18 | |||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Citation du manuel PHP
Citation:
Du coup après tu ne te fais plus avoir et tu précises toujours ton encodage comme paramètre de la fonction. Exemple marrant en PHP 5.3.3: Code :
![]() Vivement le passage en tout UTF-8
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|||
|
|
00
|
|
|
#19 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
c'est normale ça, et ça n'a rien a voir avec la prise en compte de l'UTF-8 dans le PHP 6 (qui n’existe pas d’ailleurs), ca sera pour les fonction str_*, et la gestion interne des strings (ex : $str[4])
et avec ton exemple (avec un conf full utf-8) j'ai bien jérémy qui s'affiche Apres je suis d'accord avec toi sur le fait que si une fonction accepte l'utf-8 quelle puisse le gérer par défaut
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#20 | |||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : novembre 2010 Messages : 401 ![]() |
Citation:
Citation:
(En effet, si t'es en version inférieure les encodages sont cohérents et sont tous deux ISO donc pas de problème) Citation:
__________________
Si tu ne sais pas faire, apprends. Si tu fais, fais bien. Si tu sais bien faire, enseigne. Mieux vaut paraître stupide quelques temps que rester stupide toute sa vie. |
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com