Encodage des accents [Résolu/Fermé]

Signaler
Messages postés
51
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
26 juillet 2017
-
Messages postés
51
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
26 juillet 2017
-
Bonjour,

Je développe un site en PHP 5.5 et MySQL 5.5 et j'ai un souci avec l'encodage des accents:

Si j'utilise le charset "UTF-8" dans ma balise META, mes données provenant de la base de données s'affichent correctement, mais les textes écrits directement dans l'HTML affichent des "?" à la place des accents.

Si j'utilise le charset "windows-1252" ou "ISO-8859-1" dans ma balise META, c'est l'inverse: mes données provenant de la base de données affichent des codes du genre "é", mais les textes dans l'HTML s'affichent correctement.

Que dois-je faire pour que tous les textes soient correctes ?

Merci d'avance pour votre aide !

5 réponses

Messages postés
2371
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
13 janvier 2021
437
Salut,

D'après ton premier message, tes fichiers sources ne sont pas encodés en utf-8.

Tu peux les convertir par exemple avec Notepad++ via le menu Encodage -> Convertir en UTF8 (Sans BOM). Les accents saisies directement dans ton fichier html devront alors s'afficher normalement.

Bonne journée
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
51
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
26 juillet 2017
31
Merci Pitet, ça marche maintenant !
Il suffisant donc d'encoder le fichier source lui-même...
Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 280
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
51
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
26 juillet 2017
31
Merci pour le lien, très utile !
Messages postés
2829
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
604
bonjour
tu dois utiliser utf-8 et ecrire en html les caractères accentués normalement sans faire appel aux entités html
regarde le code source (est ce des accents ou des entité)
ta base de données est elle configurée en utf8_general_ci ?
ton serveur ou ton htaccess ne serait-il pas configuré pour du iso-8859-1 ?
Messages postés
51
Date d'inscription
lundi 8 août 2005
Statut
Membre
Dernière intervention
26 juillet 2017
31
Salut,

Merci pour ta réponse.
En fait, je me suis décidé à utiliser le charset UTF-8 et à remplacer les accents dans le code html par leur code trouvé à cette page :

https://www.commentcamarche.net/contents/489-caracteres-speciaux-html

Je n'ai pas des milliers de pages avec du texte directement dans le code, alors je peux m'en sortir. Mais je serais quand-même intéressé si quelqu'un a une solution miracle :-)

Pour répondre à tes questions, oui, la bdd est en utf8_general_ci au niveau du champ "interclassement pour la connexion au serveur", mais certains champs de mes tables sont en latin1_general_ci. Est-ce que cela peut faire une différence?

Concernant le serveur, je ne sais pas si je regarde au bon endroit, mais dans le phpinfo, j'ai trouvé ISO-8859-15 pour le champ exif.encode_unicode et ISO-8859-1 pour les champs iconv.input_encoding, iconv.internal_encoding et iconv.output_encoding.

Qu'en penses-tu ?
Messages postés
2829
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
11 novembre 2019
604
Salut
déjà tu dois écrire dans le html les accents et pas leur entités (code html ou code iso)
l'utf-8 permet d'ecrire dans le code directement les accents et caractères spéciaux

passe tes champs en utf 8 dans ta bdd

sinon mets aussi cette ligne dans ton fichier htaccess
AddDefaultCharset UTF-8



Un petit merci vaut mieux qu'une grande ignorance !
Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
Bonjour,
Il faudrait faire tout proprement comme les réponses précédentes le décrive.

Si j'utilise le charset "windows-1252" ou "ISO-8859-1" dans ma balise META, c'est l'inverse: mes données provenant de la base de données affichent des codes du genre "é", mais les textes dans l'HTML s'affichent correctement. 


La solution "flemme" :
Utiliser l' ISO pour afficher correctement les accents HTML.
Pour afficher les données issues de la BDD vous pouvez encadrer les chaîne de caractère par la fonction suivante :
utf8_decode ( $string )

Qui permettra d'afficher correctement les caractères utf-8 dans un fichier html formaté ISO-8859-1

exemple :

echo "é";
echo utf8_decode ( "é" );


affichera
éé