Probleme d'accent avec IE

warcat Messages postés 2 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 8 mai 2008 - 8 mai 2008 à 15:00
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 - 8 mai 2008 à 17:35
Tout d'abord bonjour à tous, c'est mon premier message sur ce forum, j'espère que je post ce message où il faut et que je ne vais pas écrire de grosses bétises .

Voilà mon problème : je suis en train de faire mon premier site en php (c'est une petite application qui me permet de gérer une base de données) et j'ai mis en place un formulaire où je souhaite afficher une liste de 'thèmes' récupérer dans la base sous forme de checkbox. J'ai donc écrit le code suivant (c'est un extrait) :

//pour le champ 'themes' (toute les table)
                }else if(($array_champs_ins["Field"]=='themes')) { //ne s'affiche que si la table concerné contient un champ 'themes'
                    echo'';
                    echo'cocher les thèmes dont traite l\'enregistrement :
';
                    while($array_themes=mysql_fetch_array($rep_themes)){
                        echo'';
                        echo'<label for="'.$array_themes['nom_theme'].'">'.utf8_encode(nl2br($array_themes['nom_theme'])).'</label>';
                    };
                    echo'
[editer.php?page=themes Editer un nouveau thème]';
                    echo'

';

Ca marche niquel sous FireFox mais sous IE (6) les thèmes qui ont une lettre accentuée en dernière ou avant dernière lettre ne s'affichent pas du tout (les autres mots avec des accents placés ailleurs s'affichent correctement).
Donc je comprends pas trop, j'imagine que c'est un problème d'encodage (mon site et la base mysql sont en utf8_bin).
Je fais donc appel aux bonnes âmes qui pourraient m'apporter une solution.

3 réponses

Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
8 mai 2008 à 16:34
Hello,

vérifie que l'intégralité de ta base est en utf8 : parfois on met les tables par défaut en utf8 mais les champs eux-mêmes sont en iso par exemple.
Ensuite, as-tu bien mis :

mysql_connect($hostname, $username, $password) or die('DB connection unavailable');
mysql_select_db($dbname) or die('Unable to select database');
mysql_query('SET NAMES utf8 ;');

Enfin, sur tes pages, as-tu bien mis utilisé la fonction header( ) pour spécifier l'encodage ?

à+
0
warcat Messages postés 2 Date d'inscription jeudi 14 octobre 2004 Statut Membre Dernière intervention 8 mai 2008
8 mai 2008 à 17:15
Merci Evangun pour ta réponse.

J'ai ajouté : mysql_query('SET NAMES utf8');
mais par contre j'ai du remplacer les utf8_encode par des htmlspecialchars pour que les accents s'affichent correctement.
J'ai pas mis de fonction header() car je me suis demandée si il fallait l'ajouter quand même alors que le charset et déjà défini en html (<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />).

Par contre, même si maintenant ça fonctionne, je n'ai pas vraiment compris pourquoi (pourquoi ça s'affichait correctement dans la <table> qui liste mes enregistrements et pas dans le formulaire ?!?) est ce que ça pourrait avoir un rapport avec le fait que mon formulaire soit coder dans un fichier appeler en include() ? et pourquoi ça marchait sous firefox et pas sour IE ??
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
8 mai 2008 à 17:35
comment ça utf8_encode ? Si tes données sont en utf8, tu n'as pas à utiliser utf8_encode( ) par-dessus ou tu vas créer des problèmes d'affichage. J'espère que tes fichiers php sont eux-même en utf8 (je sens que non...) ? Regarde dans ton éditeur pour les mettre en utf8 si ce n'est pas déjà fait.

Pour déclarer l'encodage, laisse tomber la balise html et utilise header( ).

Regarde pour ces deux trucs et dis-nous si le problème est encore là après :)

à+
0
Rejoignez-nous