Caractères bizarre UTF-8

Résolu/Fermé
Mayumi - Modifié le 9 avril 2019 à 20:57
 Mayumi - 9 avril 2019 à 23:35
Salut !
Ma page PHP est encodée UTF-8 (enregistrée en tant que).
L'entête html est :
<META CHARSET="UTF-8" />


Le problème est que si j'écris "L'été" en objet, en local, j'obtiens bien "L'été" dans le courreir avec Wamp 3.1.7 (la dernière version). Sur mon serveur distant, j'obtiens "l'été".

Or, dans le corps du message les caractères accentués sont bien corrects.

Les transformations :
$Objet=Trim(HtmlEntities($_POST["Objet"], ENT_QUOTES,"UTF-8"));
...
$Headers="from: <".$Email.">\r\n".
"reply-to: <".$Email.">\r\n".
"content-type: text/html; charset=utf-8\r\n".
"content-transfer-encoding: 8bit\r\n".
"MIME-Version: 1.0\r\n";
$Object=MB_Encode_MimeHeader(Html_Entity_Decode($Objet, ENT_QUOTES,"UTF-8"));
...
$Envoi1=Mail("***@***", $Object, $Body, $Headers);

Je ne vois pas ce qui cloche. Avant, j'étais en ISO-8859-15 et ça marchait du tonnerre que ce soit sur le serveur distant ou la vieille version 2.5 de Wamp. Merci pour votre aide.
A voir également:

3 réponses

jordane45 Messages postés 38359 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 décembre 2024 4 720
9 avril 2019 à 20:56
Bonjour,

Commence par vérifier tout ce qui se trouve ici :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
(y compris l'encodage des fichiers sources )
0
Vérifié, le Boc-note de Windows me dit bien que je suis en UTF-8. J'ai ajouté la commande php, niet ! Comme je le dis, en local ça marche bien, c'est juste en distant et que le sujet, pas le corps du message.
0
Si je mets :
$Object=MB_Encode_MimeHeader(Html_Entity_Decode($Objet, ENT_QUOTES,"ISO-8859-15")

Sur le serveur distant, j'ai bien les caractères accentués mais en local, j'obtiens "L'?t".
0
jordane45 Messages postés 38359 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 29 décembre 2024 4 720
9 avril 2019 à 22:56
Je ne comprend pas pourquoi tu fais du html_entity encode et decode...
Quoi qu'il en soit, essaye d'ajouter ceci au début de ton script
/* Utilise l'encodage interne UTF-8 */
mb_internal_encoding("UTF-8");
0
Ca marche nickel ;) Merci
Oui j'encode les caractères en entité pour ne pas avoir de surprises comme celle-là. Difficile de lire : "l'été" ou "L'?t".
Merci encore !
0