UTF-8 ignoré dans le corps des messages

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 7 mois #764 par scoubinaire
UTF-8 ignoré dans le corps des messages a été créé par scoubinaire
Niveau GRR_340-RC2 et versions précédentes
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
Pièces jointes :
Les utilisateur(s) suivant ont remercié: JeromeB

Connexion ou Créer un compte pour participer à la conversation.

  • scoubinaire
  • Auteur du sujet
  • Membre elite
  • Membre elite
Plus d'informations
il y a 6 ans 7 mois #765 par scoubinaire
Réponse de scoubinaire sur le sujet UTF-8 ignoré dans le corps des messages
Désolé, je me suis trompé de forum: ce problème aurait dû apparaître dans "Signaler un problème":angry:

Connexion ou Créer un compte pour participer à la conversation.

  • Yan
  • Developpeur GRR
  • Developpeur GRR
Plus d'informations
il y a 6 ans 7 mois #775 par Yan
Réponse de Yan sur le sujet UTF-8 ignoré dans le corps des messages
Bonjour,
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 ?
Code:
html_entity_decode($message, encoding = UTF-8);
ne ferait pas ce qu'il faut ?
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
  • Membre elite
Plus d'informations
il y a 6 ans 7 mois #791 par scoubinaire
Réponse de scoubinaire sur le sujet UTF-8 ignoré dans le corps des messages
Bonjour, l'idée était intéressante mais j'ai essayé une douzaine de combinaisons différentes dans html_entity_decode et aucune n'a permis d'encoder en utf-8
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
  • Developpeur GRR
Plus d'informations
il y a 6 ans 7 mois #793 par Yan
Réponse de Yan sur le sujet UTF-8 ignoré dans le corps des messages

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 :
Code:
--b1_b74560ad52dabcfcf269e0b47d93d6a5 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit Ceci est un test depuis l'administration de votre GRR.<br>Le mail est arrivée à destination.
(avec au passage une faute d'orthographe à corriger)
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
  • Membre elite
Plus d'informations
il y a 6 ans 7 mois #795 par scoubinaire
Réponse de scoubinaire sur le sujet UTF-8 ignoré dans le corps des messages
Désolé, j'ai fait une faute de frappe je suis en php 7.0.28 (pas 5.0). :S
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
  • Membre elite
Plus d'informations
il y a 6 ans 7 mois #820 par scoubinaire
Réponse de scoubinaire sur le sujet UTF-8 ignoré dans le corps des messages
Bonjour voici le résultat de mes tests et mes conclusions
.
- 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.

Modérateurs: Yan