Bonjour,
j'ai un bout de mon site qui fait la chose suivante :
- Affichage d'une liste de continents
- Lorsque je choisis un continent, je fais un appel Ajax (jQuery) qui recherche dans une base de données MySQL la liste des pays de ce continent et les affiche dans un second select
La requête sql est faite par un objet mysqli sur lequel j'exécute $mysqli->set_charset("utf8") et le résultat de cette requête est retourné à l'ajax de cette façon : echo json_encode($reference->getpays($continent_id)).
Le souci concerne les pays ayant un accent, par exemple "Les Açores".
Lorsque j'affiche le dump du retour sql, les accents s'affichent.
Lorsque j'affiche le dump du json_decode, les accents ne s'affichent pas : Açores devient A\u00e7ores
Evidemment, j'ai cherché sur le web et j'ai donc :
- converti mes fichiers en utf8
- appliqué une conversion en utf8 de ma base de données et des tables avec collation utf8_unicode_ci
- tenté de "nettoyer ma bd et les données" :
- fait un export des données de ma base dans un fichier plat, vérifié que le fichier était en utf8, vérifié que les instruction de créations de tables et insertions de données se faisaient en utf8
- supprimer les tables de ma base
- importer le fichier de création / insertion
Cela n'a rien résolu.
Y'a un truc que je trouve douteux tout de même, lorsque j'affiche chaque valeur de chaque colonne de chaque ligne avec l'encodage de la donnée, alors que tout devrait être en UTF8, j'ai ce résultat :
0 => ASCII
236 => ASCII
Açores => UTF-8
1 => ASCII
1 => ASCII
Albanie => ASCII
2 => ASCII
2 => ASCII
Allemagne => ASCII
Auriez-vous une idée sur un truc que je n'aurai pas fait ?
Merci de votre aide !
Partager