Bonjour tout le monde.
J'utilise le superbe calendrier du tuto PHP, mais j'ai les horribles caractères à la place de mes accents.

Alors oui, cette erreur est bien connue, et j'ai vraiment cherché. Je n'ai trouvé que des conseils type :

Ajouter ceci : <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
Convertir tous les fichiers en UTF8 sans BOM
etc

La ligne charset=UTF-8 est déjà présente dans le fichier, et j'ai converti config.php ; date.php et index.php en UTF8 sans BOM avec Notepad++.
Et pourtant ! Toujours ces caractères qui n'ont pas l'air de vouloir bouger.

Que faire ? Je m'en remet à vous, merci d'avance.
Px.

9 réponses


Plumeex
Auteur
Réponse acceptée

En fait, j'ai mis AddDefaultCharset UTF-8 dans mon .htaccess et ça marche !
Merci tout de même pour votre aide. :)

En premier lieu cette erreur te vient qu'en tu sort tes donnée de mysql ou dans tu texte quelconque ?

Sinon vérifie l'encodage de ta page !

Plumeex
Auteur

Ça le fait sur n'importe quel texte. (ex : Février au lieu de Février)
La page est bien encodée en "UTF8 sans BOM", je ne comprends pas...

Essaye sa :

header('Content-type: text/html; charset=utf-8');

(php)

Plumeex
Auteur

J'ai déjà essayé, il me retourne une erreur comme quoi header est déjà défini :

Warning: Cannot modify header information - headers already sent by (output started at /chemin/vers/le/fichier/index.php:7) in chemin/vers/le/fichier/index.php on line 30

Et c'est à la ligne 30 que j'ai mis ton header('Content-type: text/html; charset=utf-8'); (juste sous le <?php, et il n'y a rien d'autre sur la ligne)

Et pourquoi me dit-il index.php :7?

quand tu as créer ta BDD tu as bien choisie utf8_general_ci? j'avais ce problème j'ai refais ma BDD comme sa et sa as fonctionner ou des fois ces tous bête c'est ton navigateur dans encodage des caractères il est sur ISO au lieu de UTF8

Plumeex
Auteur

Heu, je ne sais pas, c'est mon hébergeur web qui me fournit la base. Où puis-je trouver cette info dans PHPMyAdmin ?

J'ai jamais fais heberger un site php mais si tu peux faire des requêtes SQL fais celle si pour voir en quelle Interclassement tu es

SHOW VARIABLES

après sa va charger une page et tu descend jusqu’à ce que tu vois la ligne character_set_database si sa valeur est latin1 sa veux dire que tu es en ISO et si ces le cas pour changer tu dois faire la requête

DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci

après je sais pas si sa va fonctionner teste et dit moi

Plumeex
Auteur

Alors j'ai regardé et j'ai bien latin1, donc j'ai envoyé

DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci

Mais il me dit :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci' at line 1

Qu'est-ce donc ?