Bonjour,
Le problème d'affichage est classique, au lieu de lire:
"3 planches dépliantes hors texte."
Dans le navigateur on lit:
"3 planches d�pliantes hors texte."
Je dois passer le navigateur en mode 'occidental' pour qu'il s'affiche correctement ( la partie html n'utilise que des é et consorts donc ça marche aussi ).
Le site est 100% en utf-8, le navigateur le détecte bien comme tel ( affichage par défaut unicode ) le problème vient de la base de données ( Pour apache et php.ini j'ai tout épluché et c'est bien en UTF8 et c'est seulement ce qui est chargé depuis la bdd qui dérappe, de plus les symptômes sont les mêmes sur la version en ligne chez mon hébergeur ) et la suite devient beaucoup moins banale !
J'ai rajouté
Dans my.cnf, à l'ouverture de la table j'ai rajouté:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [mysql] default-character-set = utf8 default-collation = utf8_general_ci
Et la structure de la table ( Qui s'affiche bien en unicode dans phpmyadmin ) semble correcte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mysqli_set_charset( $conn , UTF8 ); mysqli_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");
Mes requêtes n'ont rien de spécial et ressemblent toutes à ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE `0b_cat_full` ( `CODE` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '.', `CODACHAT` varchar(12) CHARACTER SET utf8 NOT NULL DEFAULT '.', `TITRE` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '.', `AUTEUR` varchar(70) CHARACTER SET utf8 NOT NULL DEFAULT '.', `EDITEUR` varchar(70) CHARACTER SET utf8 NOT NULL DEFAULT '.', `ILLUSTR` varchar(70) CHARACTER SET utf8 NOT NULL DEFAULT '.', `TYPILL` varchar(4) CHARACTER SET utf8 NOT NULL DEFAULT '.', `TYPE` varchar(3) CHARACTER SET utf8 NOT NULLTYPE` varchar(3) CHARACTER SET utf8 NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
J'ai aussi:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $Liste=$db->query("$SeekInstru LIMIT $From, $NbLines" ); While ( $Fiche= $Liste->fetch_array()) $Titre=$Fiche['TITRE']; Etc...
Dans le header du site.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <meta charset="utf-8">
Rien n'y fait, si je veux que l'affichage par défaut soit correct je n'ai que deux options:
1: A l'importation des données dans la table via phpmyadmin je choisis l'option d'encodage ISO-8859-15 et tout est correct ( Les fichiers .sql sont bien en UTF8).
2: Au début du site je rajoute:
Ça marche aussi mais le gag c'est que le navigateur passe en détection automatique Japonais. Avec ISO-8859-1 il reste en occidental.
Code : Sélectionner tout - Visualiser dans une fenêtre à part header('Content-Type: text/html;charset=ISO-8859-15');
Ce truc me fait tourner en bourrique depuis hier, est-ce que quelqu'un à une idée de pourquoi un BDD UTF8 veut impérativement s'afficher en ISO ?
Partager