Page 1 sur 1

Problème d'interclassement

Posté : 03 avr. 2008, 22:07
par DeLorbe
Bonjour,

Je sais que ce sujet a été discuté plein de fois, mais j'ai beau lire et faire ce qu'il y a écrit, j'ai toujours ce problème : quand j'enregistre des données dans ma base, les accents se retrouvent changés par des hiéroglyphes.

Voici ma config :
Wamp2 : Apache 2.0.63, PHP 4.4.4, MySql 5.0.51a

phpMyAdmin me dit :
Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) --> j'ai pas trouvé comment changer ça
Interclassement pour la connexion MySQL: utf8_general_ci

Et j'ai créé ma base en utf8_general_ci.
Pareil pour ma table : elle comporte un champ Nom (VARCHAR(100) - utf8_general_ci)

Ma page web contient dans le head :
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />

Et ça marche pô :cry:

Si quelqu'un se sent l'envie de me ré-expliquer comment ça marche, merci d'avance :wink:

Posté : 03 avr. 2008, 23:21
par Nagol
php a lui même une conf pour l'utf8

ou sinon tu peux utiliser utf8_encode et utf8_decode.

Posté : 03 avr. 2008, 23:40
par DeLorbe
Merci pour ta réponse :wink:

Je suis en train de refaire mon site, et je teste au fur et à mesure.

J'ai déjà essayé de faire ça :

Code : Tout sélectionner

$Nom = $_POST["txtNom"]; $Nom = utf8_encode($Nom);
Et en vérifiant dans ma table avec phpMyAdmin, les accents étaient remplacés par des symboles.

J'aurais pu récupérer la valeur de Nom avec une requête SELECT, puis utiliser utf8_decode(), mais ce qui m'intéresse, c'est que les données soient inscrites correctement dans la table...

[EDIT :]
Je suis en train d'essayer de faire un site conforme aux normes W3C. Tu n'aurais pas un exemple type (le code d'une page web) avec les balises <meta doctype etc...> stp?

Posté : 03 avr. 2008, 23:49
par Hubert Roksor
ATTENTION : ne pas utiliser utf8_encode() ou utf8_decode() sans savoir ce que ça fait, et surtout pas si la page indique déjà le bon charset.

Assure-toi que toutes tes colonnes sont en UTF-8, que ta page est bien en UTF-8 et essaie d'exécuter ça en début de page pour t'assurer que la connexion à MySQL est en UTF-8

Code : Tout sélectionner

SET NAMES utf8

Posté : 03 avr. 2008, 23:57
par DeLorbe
Je vais regarder ces fonctions de près, mais j'avais préféré ne pas les utiliser de toute façon.
C'est marrant, mon vieux site ne m'a jamais fait ça, lui, je l'avais fait avec Dreamweaver :?

Dans la page qui déconne, j'ai voulu mettre ce code :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Résultat, j'ai ça qui s'affiche en haut de ma page :


Mais les accents sont bien enregistrés dans la table!!!

Je n'y comprends rien :cry:

EDIT :
Bon, j'ai refait ma page, et ça marche :roll:
Mais franchement, j'ai beau comparer les codes, je ne vois pas ce que j'ai fait :roll:

Posté : 04 avr. 2008, 00:46
par Hubert Roksor
Tu as peut-être tout simplement créé ta page en ISO-8859-1. Dans ce cas, la plupart des navigateurs ignorent ta balise <meta> et considère que la page est ISO-8859-1, pas UTF-8. Du coup, le navigateur et ton script ne parlent pas la même langue mais ne sont pas au courant, et ce genre d'erreurs arrive.

Posté : 04 avr. 2008, 03:43
par DeLorbe
Je vois.
J'ai dû me tromper entre la config de ma base sous MySql et celle de ma page web...

Merci :wink: