Bonjour @ tous !

Mon site est encodé en UTF-8 , mais sur certaines pages j'ai ce caractère ? (losange noir avec un point d'interrogation à l'intérieur) qui s'affiche quand une variable contient des accents.
J'ai essayé de faire un utf8_encode sur les variables qui posent problème mais ça ne change rien.

J'ai remarqué également que quand j'envoi des e-mails les caractères accentués s'affichent ? (losange noir avec un point d'interrogation à l'intérieur) sur mon smartphone (HTC sensation XE), alors que sur un PC ils s'affichent correctement.

Je précise que les chaines accentuées posant problèmes ne sont pas extraite d'une BDD mais viennent d'un formulaire envoyer en POST.

J'aurai besoin d'un peu d'aide pour comprendre...

6 réponses


6ber6ou
Auteur
Réponse acceptée

En fait pour avoir de l'UTF-8 en minuscule avec des caractères accentués il faut utiliser mb_strtolower

mb_strtolower('Mon Prénom', 'UTF-8')

Bonjour,

"Chaque fichier doit impérativement être enregistré en UTF-8 sans BOM (Byte Order Mark)."
==> http://j-willette.developpez.com/tutoriels/web/encoder-son-site-en-utf8/

6ber6ou
Auteur

Justement le soucis c'est que le document est bien encodé en UTF-8(sans BOM) dans Notepad++.
Seul certains caractères acctenués provenant d'un formulaire envoyé en POST ne s'affichent pas correctement.

6ber6ou
Auteur

Merci pour ton lien très instructif, j'ai testé en supprimant les htmlspecialchars et htmlentites mais le problème été toujours là.
Par contre je viens de m’apercevoir que le soucis vient du fait que je fait un strtolower sur la variable, car quand je l'enlève les caractères s'affichent correctement !

Je ne comprends plus rien là !
C'est quoi ce comportement bizarre ? Si quelqu'un à la réponse je suis preneur ...

Salut, as-tu mets la meta avec l'attribue 'charset' en haut de tes pages html ?