- Messages : 167
UTF-8 ignoré dans le corps des messages
- scoubinaire
- Auteur du sujet
- Membre elite
Bonjour, le formatage en utf-8 dans le corps des messages est ignoré
Exemple, pour un message de réservation en attente de réservation :
Votre demande est en attente de modération.
Vous serez notifié dès la décision du gestionnaire de la ressource.
Par contre le sujet du message est correct
Exemple Sujet : GRR : avis Salle 308 - 2018/03/29 - Réservation en attente de modération
.
Ceci est causé par la fonction html_entity_decode qui détruit le format utf-8. Cetains internautes s'en plaigent sur Internet. Une solution proposée est d'englober cette fonction dans utf8_decode(...)
.
Solution
dans include\functions.inc.php remplacer toutes les lignes contenant
html_entity_decode($message...) par
utf8_decode(html_entity_decode($message...))
Il y a 5 occurrences
.
Exemple
$message5 = html_entity_decode($message5); avant modif
$message5 = utf8_decode(html_entity_decode($message5)); après modif
Connexion ou Créer un compte pour participer à la conversation.
- scoubinaire
- Auteur du sujet
- Membre elite
- Messages : 167
Connexion ou Créer un compte pour participer à la conversation.
- Yan
- Developpeur GRR
- Messages : 2115
ce n'est vraiment pas grave puisque vous avez donné une solution au problème rencontré.
Par contre, n'est-il pas possible de traiter l'encodage avec le paramètre encoding de html_entity_decode ?
Pouvez-vous tester et nous en faire le compte-rendu ?
D'avance merci !
Cordialement,
YN
Connexion ou Créer un compte pour participer à la conversation.
- scoubinaire
- Auteur du sujet
- Membre elite
- Messages : 167
La documentation indique pour encoding :
Un argument optionnel définissant l'encodage utilisé lors de la convertion des caractères.
Si omis, la valeur par défaut du paramètre encoding varie suivant la version PHP utilisée. En PHP 5.6.0 et suivants, l'option de configuration default_charset sera utilisée comme valeur par défaut. En PHP 5.4 et 5.5, UTF-8 sera la valeur par défaut. Pour les versions plus anciennes, PHP utilisera ISO-8859-1.
Je suis en php 5.0, mon php.ini contient bien default_charset="UTF-8" , mon config.inc.php contient $unicode_encoding = 1; la page web contient bien <meta charset="utf-8">, donc l'encoding devrait se faire automatiquement. J'ai même utilisé 2 php 5.0 différents, celui de mon site (OVH) et celui de xampp en localhost toujours sans succès. Je me demande si encoding est prévu pour encoder tout le string ou certains caractères seulement.
J'ai donc laissé utf8_decode(html_entity_decode($message...)) et les textes des emails pour les usagers et les administrateurs sont corrects.
Connexion ou Créer un compte pour participer à la conversation.
- Yan
- Developpeur GRR
- Messages : 2115
scoubinaire écrit: Je suis en php 5.0, mon php.ini contient bien default_charset="UTF-8" , mon config.inc.php contient $unicode_encoding = 1; la page web contient bien <meta charset="utf-8">, donc l'encoding devrait se faire automatiquement. J'ai même utilisé 2 php 5.0 différents, celui de mon site (OVH) et celui de xampp en localhost toujours sans succès.
Je crois que tout le problème vient de là : php 5.0 ; l'encodage automatique ne fonctionne qu'à partir de php 5.6.
Je teste en php 5.6.31 et je reçois les messages bien encodés.
Extrait du corps du message de test :
Pouvez-vous récupérer le code du message reçu pour voir s'il est bien formé ? Je suis intrigué par le fait que l'entête soit correct mais pas le corps du message.
Connexion ou Créer un compte pour participer à la conversation.
- scoubinaire
- Auteur du sujet
- Membre elite
- Messages : 167
J'ai une version xampp 5.6 je vais y installer Grr et vous donner les résultats pour vérifier si c'est lié à la version de PHP
Connexion ou Créer un compte pour participer à la conversation.
- scoubinaire
- Auteur du sujet
- Membre elite
- Messages : 167
.
- On s'aperçoit que les résultats sont différents suivant les noms de domaine de l'adresse mail (ex. orange.fr, gmail.com,..) et les logiciels utilisés pour lire les messages.
.
- Avec Gmail tout est correct (les lettres accentuées sont correctes dans le sujet et dans le corps du message) car Gmail s'adapte automatiquement au contenu du message
- Avec Roundcube, sujet et texte incorrects. Solution : Paramètre > Préférences > Affichage des courriels > Options avancées > Jeu de caractères par défaut > Choisir UTF-8
- Avec Thunderbird, sujet correct mais texte incorrect. Solution : clic droit sur un nom de compte (n'importe lequel) > Paramètres > Rédaction et adressage > Préférences globales de rédactions > Affichage > Avancé (en face de police par défaut) > Courrier entrant > Choisir Unicode (UTF-8 )
- Messages envoyés sur wanadoo.fr ou orange.fr avec affichage des messages sur Internet (webmailxx.orange.fr), sur Smart Phone ou sur Thunderbird (même configuré en UTF-8 ) les sujets et messages sont toujours incorrects. Je n'ai pas trouvé de solution. Je compte le signaler à Orange.
.
Ma conclusion
GRR fonctionne correctement
Par contre pour les mails de Wanadoo et Orange, si c'est trop génant, il faut utiliser le patch suivant (plus complet que celui que j'ai proposé)
dans include/functions.inc.php
remplacer les lignes similaires à :
Email ::Envois($destinataire, $sujet, $message, $repondre, '', '');
par
Email::Envois($destinataire, utf8_decode($sujet), utf8_decode($message), $repondre, '', '');
Il y a 8 occurences
Connexion ou Créer un compte pour participer à la conversation.