Scite et caractères non désiré...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Scite et caractères non désiré...

par jojolapine » 02 oct. 2007, 15:20

Il se peut que ton serveur SQL soit configuré pour communiquer en ISO-8859-1. Pour être sûr de récupérer tes données en UTF-8, exécute cette requête en début de session :

Code : Tout sélectionner

SET NAMES utf8
Suite au message de mojorisin (HS: tu t'appellerais pas joris par hasard?), je me suis rendu compte que je n'avais pas trop compris ton message Hubert, et j'ai donc rajouter ma requête dans mon code php (je l'avais tester dans phpmyadmin, et donc ça n'avait eu aucune incidence sur mes scripts), et tenez-vous bien: ça fonctionne!!!!
Youpi youpi!
Maintenant une question subsidiaire: comment faire pour éviter cette requête?
Y a t'il un moyen de configurer mon serveur sql à long terme?

par mojorisin » 02 oct. 2007, 11:34

Bonjour,
le changement d'encodage de tes tables n'entrainera pas la modification des données déjà insérées. Il te faut insérer à nouveau tes données.
Peut être y a t il moyen de le faire avec un update ou une instruction spéciale mais je ne connais pas la solution :)

Récapitulatif :
Table, champs en utf-8
Avant de rapatrier des données, envoi d'une requete SET NAME utf8
Envoi d'un header via php spécifiant l'encodage
Enregistrement des fichier en utf8

par jojolapine » 01 oct. 2007, 11:48

Bon alors,
de retour de we, je me repenche sur mon problème...
J'ai vérifié, que mes tables était en utf8_unicode_ci, et effectivement elles ne l'étaient pas, j'ai modifié la chose, donc j'ai ma base et mes tables qui sont en utf8_unicode_ci, mais ça ne marche toujours pas...
Peut-être qu'il faudrait que je recré la base et les tables ?
Je sais pas trop d'où ça peut venir...

par jojolapine » 27 sept. 2007, 11:22

Je répondrais ce we, j'ai pu mon ordi là ;)

par naholyr » 26 sept. 2007, 20:05

Ta base est en utf-8, mais tes tables ?

par jojolapine » 26 sept. 2007, 19:02

Alors voilà le résultat: C'est grave docteur?
Donc apparemment, ce n'est ni utf8 ni iso?
Et sinon, où est-ce qu'on peut régler les paramètres de connexion (tient j'en profite pour dire que ej suis en local avec wamp, et pour dialoguer avec la bdd, j'utilise PDO, si ça peut servir ;) )

par Hubert Roksor » 26 sept. 2007, 15:00

Tu peux vérifier si ta connexion (pas le serveur, je parle bien de la connexion, la méthode de communication) est bien en UTF-8 en insérant le caractère é dans une table à l'aide de phpMyAdmin (pour être sûr que l'insertion est correcte, puisqu'on sait que phpMyAdmin fonctionne) puis en récupérant le résultat dans ton script. Ensuite, tu regardes de quels octets est composé le résultat avec bin2hex(). En UTF-8 le résultat devrait être c3a9, en iso-8859-1 ce sera e9. [corrigé, c'est bien "e9"]

par jojolapine » 26 sept. 2007, 14:41

Je pense que mon serveur est bien en utf8
# Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Interclassement pour la connexion MySQL:
utf8_unicode_ci
J'ai malgrès tout exécuté ta requête, mais ça n'a pas l'air de changer qqch...
Pour récapituler tout mes encodages:

En haut de toutes les pages php, j'ai
header('Content-Type: text/html;charset=utf-8');
puis en html:
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
scite est en "utf8-cookie"
et pour la base de donnée c'est au dessus...

Je viens de me rendre compte d'une chose, en utilisant l'outil "informations sur la page" de firefox, j'ai lu ceci:
Accept-Charset: ISO-8859-1,utf-8,q=0.7,*;q=0.7
Content-Type: text/html; charset=utf-8
Est-ce que le fait que l'iso soit avant l'utf8 dans ma requête pose un problème?

par Hubert Roksor » 26 sept. 2007, 14:27

Il se peut que ton serveur SQL soit configuré pour communiquer en ISO-8859-1. Pour être sûr de récupérer tes données en UTF-8, exécute cette requête en début de session :

Code : Tout sélectionner

SET NAMES utf8

par jojolapine » 26 sept. 2007, 14:17

Ok je comprend un petit peu mieux...
J'ai mis dans mon fichier d'include un header(...), et ça à l'air de fonctionner à peu près...
Par contre pour les données qui viennent de la bdd.. (je dérive un peu le sujet.
ma bdd est en utf8_unicode_ci, et si je ne met pas uft8_encode sur mes résultats, je pert les caractères spéciaux...
Je ne m'y retrouve plus trop là... :(, je sais pas si je vais pas repasser en iso :roll: )

par Hubert Roksor » 26 sept. 2007, 13:58

euh... on est obligé de passer les entêtes en php?
Disons qu'il existe une bonne (correcte) façon de faire, et que d'autres techniques permettent d'aboutir à peu près au même résultat. La bonne façon, c'est d'indiquer le charset dans les en-têtes HTTP. Sinon, le navigateur est obligé de deviner quel est l'encodage du fichier et si pour une raison X le navigateur décide que ta page est en SJIS alors il ne saura même pas qu'elle contient une balise <meta>.

Pour répondre à la question, non, on n'est pas obligé, ça peut fonctionner avec une balise <meta>, avec un BOM ou avec rien du tout.

par fab » 26 sept. 2007, 12:45

tu sais en quoi son encodés tes fichiers? lors de l'enregistrement de ton fichier ( celui qui contient le code ) tu peux souvent choisir suivant les éditeurs l'encodage de ton fichier si tu veux qu'il l'affiche e nut8 d'apres le charset faut aussi que le fichier contenant soit en utf8 ( enfin je crois )

par jojolapine » 26 sept. 2007, 12:33

euh... on est obligé de passer les entêtes en php?
si j'ai un
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ça suffit pas?
En fait, j'ai commencé mon site en ISO-8859-1 et puis j'avais quelques problèmes d'accents, et je me suis dit, tient pourquoi pas passer en utf-8, c'est peut-être pas une bonne chose... j'en sais strictement rien :oops:
Toujours est-il que par exemple le SiteDuZero est codé entièrement en utf-8...
Donc ça doit pouvoir se faire...
Après moi je n'en ai peut-être pas l'utilité (mon site est en français pour l'instant, sera peut-être un jour en anglais, mais jamais en chinois)

par Hubert Roksor » 26 sept. 2007, 12:26

le site sera toujorus en utf-8?
Ton site est en UTF-8 si tu le précises dans les en-têtes, sinon rien n'est garanti (et au passage tu ouvres la porte à certaines failles de sécurité).
header('Content-Type: text/html;charset=utf-8');

par jojolapine » 26 sept. 2007, 12:07

C'est ce que j'avais cru lire ailleurs, mais comment faire pour enlever ce "BOM", ou travailler en "cookie" ?

edit: alors j'ai trouvé le mode "cookie", ça à l'air de fonctionner...
Mais est-ce que ça change quelque chose pour mon site? le site sera toujorus en utf-8?