JeuWeb - Crée ton jeu par navigateur
[MySQL] Caractères spéciaux défectueux (é pour é) - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [MySQL] Caractères spéciaux défectueux (é pour é) (/showthread.php?tid=3727)



[MySQL] Caractères spéciaux défectueux (é pour é) - Feldoran - 25-02-2009

J'ai un champ VARCHAR sur une table MyISAM en MySQL.

Avec un script qui fait des INSERT dessus... sans problème tout passe bien.

Et un script qui tente un update... des caractères sont remplacés dans MySQL et ça met le bronx, genre:
"é" à la place de "é"
et "ç" à la place de "ç"

Même en enlevant les fonctions spéciales genre htmlspecialchars, mysql_real_escape_string et compagnie... En Echo la requête d'UPDATE est très simple et très claire, les accents sont bien là. Et une fois dans MySQL ça passe plus.

Gonflant, ça ressemble à un problème assez bateau et j'ai l'impression d'avoir déjà lutté avec ce type de problème, mais là je sais pas si c'est l'heure mais j'ai pas d'idée... Quelqu'un voit le problème?
Merci!


Edit Sephi-Chan : Merci de parler de problème et nom de pb.


RE: pb de caractères sous MySQL - wild-D - 25-02-2009

question première quand tu dis que t'as des
Citation :"é" à la place de "é"
et "ç" à la place de "ç"
c'est en affichant où? sur ton site, ou depuis phpmyadmin ?

c'est les charset de ta base de données/site qui "déconnent" Tongue (é c'est le caractère UTF-8 pour é quant tu affiche celui-ci en "iso")
par contre je t'avoue que le coup du INSERT qui fonctionne et du UPDATE pas, ça me paraît étrange. (tes fichiers de script sont tous avec le même charset ? -au cas ou t'aurais le fichier d'update et d'insert qui serait pas avec le même?; ou bien un coup tu force le charset de ta connexion bdd et pas l'autre ?-).
Faut aussi vérifier que tu envoie les bon en-tête http avec header (si tu envoie un encodage en uft-8 faut pas envoyer l'entête iso), idem dans ton header html. (Si tu veux t'éviter ces problèmes faut que tu travailles avec un encodage homogène ça évite l'apparition de ce genre d'ennui).


RE: pb de caractères sous MySQL - Feldoran - 25-02-2009

Ben, j'ai une page d'insert qui me sert à insérer 20 comptes tests. Ce n'est que du code qui n'affiche rien donc je n'ai pas défini le charset.
Et la page d'update est aussi une page transitoire de traitement qui n'affiche rien, donc pas de charset défini.
Les deux pages emploient le même include de connexion.

La différence que je peux voir c'est que les INSERT emploient une valeur défini directement dans la page, tandis que l'UPDATE utilise une variable récupérée en post (sur laquelle j'applique pour l'instant juste trim et substr). Mais quand j'affiche cette valeur récupérée, les accents sont correctement représentés dans le code source!

o_O


RE: pb de caractères sous MySQL - wild-D - 25-02-2009

^^ un fichier text a toujours un encodage de caract
^^ un fichier text a toujours un encodage de caractère (si t'as un éditeur de code un minimum évolué celui-ci permet de le définir)

si tu les gères pas, tu te retrouve avec des encodages par défaut, qui selon ta config sont pas toujours les mêmes. (et après bonjour les embrouilles).

donc à toi de décider soit tu passes tout en UTF-8, ou tout en iso-8859-1. Et ensuite
- tu vérifies que tes fichiers scripts sont bien dans le bon encodage.
- tu t'assure que tu envoie aussi le bon encodage via http (fonction php header(), ou bien tu défini dans ton php.ini correctement le default_charset)
- au besoin si tu utilise les meta dans tes en-tête html là aussi tu t'assure d'être bon
- et si le coeur t'en dis tu termine avec avec le charset de ta connection mysql et celui des champs text de tes tables.

... j'espère que j'ai rien oublié Tongue

p.s.
au besoin tu peux regarderavec ton navigateur l'encodage de ta page web avec un clic droit propriété/information de la page pour savoir comment lui il la "décode"


RE: pb de caractères sous MySQL - Feldoran - 25-02-2009

Ben, l'encodage au niveau du fichier à proprement parler je ne pensais pas qu'il pouvait être en cause vu que l'affichage de la variable par un echo donne quelque chose de bon. Mais je vais vérifier tout ça à fond, merci.


RE: pb de caractères sous MySQL - Anthor - 25-02-2009

Alors c'est ton serveur SQL qui est mal configuré !
Ça arrive sur beaucoup beaucoup de serveurs hélas...