Bonjour,
J'ai un serveur xampp et je voudrais créer un site en utf8, qui me semble être un format plus standard, notamment pour pouvoir utiliser AJAX sans complication.
Le résultat que j'obtiens : Les caractères accentués s'affichent correctement si ils proviennent d'une variable ou s'ils sont écrits directement, ma page html étant lue par le navigateur en utf-8, mais toutes les informations provenant de la base de donnée affichent des � à la place des caractères accentués.
Si je force mon navigateur à lire la page html en iso-8859, les données provenant de la base de donnée s'affichent correctement mais pour le reste les caractères accentuées deviennent é.
Voilà ce qui me fait dire qu'une partie de ma page est en utf8 (celle que je fais directement), et l'autre partie est en iso (celle qui vient de mysql).
Petite précision : dans phpmyadmin tout s'affiche normalement à l'écran sans problème d'accents.
Voici ce que j'ai déjà tenté pour résoudre mon problème :
J'ai ajouté la ligne AddDefaultCharset utf8 à mon ficher de configuration apache.
Dans phpmyadmin, j'ai bien Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) et Interclassement pour la connexion MySQL: utf8_general_ci
J'ai vérifié que je n'avais aucun champs, table, ou base de donnée réglé sur autre chose que utf8_general_ci, et même créé une nouvelle base au cas où.
J'enregistre mes fichiers .php avec l'encodage utf8 (d'ailleurs les éléments qui ne viennent pas de la base de donnée s'affichent correctement dans le navigateur)
J'ai indiqué <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
J'ai essayé d'ajouter header( 'content-type: text/html; charset=utf-8' ); au début de mes fichiers php, mais je ne crois pas de toute façon qu'il soit utile de le faire si j'ai déjà indiqué AddDefaultCharset utf8 dans le fichier de configuration apache?
J'ai essayé également d'ajouter une requête SET NAMES "utf8" au début de mon fichier php, mais je ne suis pas sure d'avoir bien compris si c'est là qu'il fallait l'ajouter, de plus il ne me semble pas non plus utile de le faire si la communication avec mysql est déjà définie en utf8.
J'ai même lu les fichiers de config php apache et mysql à la recherche d'une petite option à dé-commenter ou modifier, sans succès.
La seule chose qui "fonctionne" est d'utiliser la fonction utf8_encode de façon systématique sur les données provenant de ma bdd, mais je ne trouve vraiment pas ça élégant, c'est comme guérir le symptôme mais pas la maladie.
Si quelqu'un peut voir ce qui ne va pas là dedans, ce que j'aurais du faire ou ne pas faire, cela m'aiderait beaucoup car je sèche depuis un moment sur ce problème et ce que j'ai pu lire ici et là ne m'a pas été d'un grand secours.
Merci d'avance.
Agnès
Modifié par MAgnes (16 Nov 2011 - 12:28)
J'ai un serveur xampp et je voudrais créer un site en utf8, qui me semble être un format plus standard, notamment pour pouvoir utiliser AJAX sans complication.
Le résultat que j'obtiens : Les caractères accentués s'affichent correctement si ils proviennent d'une variable ou s'ils sont écrits directement, ma page html étant lue par le navigateur en utf-8, mais toutes les informations provenant de la base de donnée affichent des � à la place des caractères accentués.
Si je force mon navigateur à lire la page html en iso-8859, les données provenant de la base de donnée s'affichent correctement mais pour le reste les caractères accentuées deviennent é.
Voilà ce qui me fait dire qu'une partie de ma page est en utf8 (celle que je fais directement), et l'autre partie est en iso (celle qui vient de mysql).
Petite précision : dans phpmyadmin tout s'affiche normalement à l'écran sans problème d'accents.
Voici ce que j'ai déjà tenté pour résoudre mon problème :
J'ai ajouté la ligne AddDefaultCharset utf8 à mon ficher de configuration apache.
Dans phpmyadmin, j'ai bien Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) et Interclassement pour la connexion MySQL: utf8_general_ci
J'ai vérifié que je n'avais aucun champs, table, ou base de donnée réglé sur autre chose que utf8_general_ci, et même créé une nouvelle base au cas où.
J'enregistre mes fichiers .php avec l'encodage utf8 (d'ailleurs les éléments qui ne viennent pas de la base de donnée s'affichent correctement dans le navigateur)
J'ai indiqué <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
J'ai essayé d'ajouter header( 'content-type: text/html; charset=utf-8' ); au début de mes fichiers php, mais je ne crois pas de toute façon qu'il soit utile de le faire si j'ai déjà indiqué AddDefaultCharset utf8 dans le fichier de configuration apache?
J'ai essayé également d'ajouter une requête SET NAMES "utf8" au début de mon fichier php, mais je ne suis pas sure d'avoir bien compris si c'est là qu'il fallait l'ajouter, de plus il ne me semble pas non plus utile de le faire si la communication avec mysql est déjà définie en utf8.
J'ai même lu les fichiers de config php apache et mysql à la recherche d'une petite option à dé-commenter ou modifier, sans succès.
La seule chose qui "fonctionne" est d'utiliser la fonction utf8_encode de façon systématique sur les données provenant de ma bdd, mais je ne trouve vraiment pas ça élégant, c'est comme guérir le symptôme mais pas la maladie.
Si quelqu'un peut voir ce qui ne va pas là dedans, ce que j'aurais du faire ou ne pas faire, cela m'aiderait beaucoup car je sèche depuis un moment sur ce problème et ce que j'ai pu lire ici et là ne m'a pas été d'un grand secours.
Merci d'avance.
Agnès
Modifié par MAgnes (16 Nov 2011 - 12:28)