Hotmail et UTF-8

 2006-06-14

UTF-8 est la lingua franca du web : cette méthode d'encodage permet d'utiliser sur Internet les caractères de toutes les langues modernes et plus encore.

La norme HTML 4.0, la plus récente, qui date des années 90, prévoit expressément que tout navigateur doit être capable de décoder les pages servies en encodage ASCII (alphabet latin sans accent), latin-1 (alphabet latin + la quasi totalité des accents nécessaires aux langues d'Europe de l'Ouest) et utf-8.

En théorie donc il est possible d'envoyer à une messagerie électronique par web ("webmail") un e-mail au format html encodé en utf-8.

Mais il y a un problème : Microsoft.
Plus exactement, hotmail, le webmail de Microsoft.
Et plus exactement encore, hotmail.com, car les autres versions d'hotmail, par exemple hotmail.fr, ne présentent pas ce défaut.

Quel est-il ? Hotmail.com affiche les caractères dans leur encodage d'origine, mais ne précise pas au browser le codage de la page. En l'absence d'indication, les navigateurs, comme le prévoit la norme html 4.0, affichent les pages en mode latin-1. Si l'e-mail est en utf-8, tous les caractères accentués deviennent à l'écran un magma incompréhensible.
En toute rigueur, hotmail.com devrait transcoder les e-mails en mode latin-1 avant de les envoyer au navigateur. C'est possible, c'est simple à programmer, et Microsoft sait le faire puisque c'est ainsi que fonctionne, par exemple, hotmail.fr.
Mais les ingénieurs d'hotmail.com doivent certainement penser qu'hotmail.com est fait pour les anglophones, et qu'ils ne sont pas sensés recevoir des e-mails dans d'autres langues que l'anglais. C'est un raisonnement idiot, mais probablement logique pour une société qui se prend pour le nombril du monde.

Toujours est-il qu'il faut bien trouver une solution.
Hotmail compte pour 30 % du marché des webmail (30 % étant occupés par YahooMail et le reste par une myriade de petits fournisseurs). Il est donc impossible de l'ignorer.
A défaut d'être ignorée, l'idiotie des ingénieurs de Microsoft doit donc être contournée.

La solution la plus simple serait d'encoder au départ tous les caractères au-delà de l'ASCII en entités numériques (du type & #358;). PHP gère cette conversion très facilement, même si cette étape supplémentaire alourdi la charge processeur du script d'envoi des e-mails.
C'est prendre les ingénieurs de Microsoft pour plus intelligents qu'ils ne sont : on s'aperçoit en effet bien vite que hotmail.com ne se contente pas d'envoyer ses pages web sans indications d'encodage (une faute html grossière). Hotmail s'amuse en effet à re-transcoder les entités numériques dans le codage d'origine de l'e-mail ! En d'autres termes, si l'e-mail indique un encodage en utf-8, hotmail retranscrit les entités numériques en utf-8, mais continue de les envoyer au navigateur sans indications d'encodage, laissant le navigateur penser qu'il s'agit de latin-1 !

La seule solution adéquate est donc :
- d'encoder les e-mails en entités numériques ET d'indiquer un encodage latin-1. De la sorte, hotmail.com ne transcode en latin-1 que les entités numériques de rang inférieur à 256 et laisse les autres entités intactes.

La solution idéale serait bien évidemment de convaincre les utilisateurs d'hotmail.com d'abandonner ce service au profit de véritables clients e-mail. Il en existe, payants et gratuits, pour tous les goûts, qui sont totalement portables...

En 2006, quel est l'intérêt d'utiliser un service web lent, peu pratique, et irrespectueux des standards, et de laisser sa correspondance privée sur des serveurs ouverts à tous pirates et gouvernements indélicats, alors qu'il est possible de porter à son cou, sur des clés USB cryptées, son nécessaire de correspondance ?

Préparer cette page en vue de l'impression Envoyer cette page par e-mail

  Voir et ajouter des commentaires

Nouveautés sous cette rubrique :
PHP : array_shift  (English follows)La fonction PHP array_shift peut être assez gourmande en ressou (...)
PHP : transformToDoc vs. transformToXML ?  English translation follows.Dans la plupart des cas, si vous attendez une sortie (...)
Hotmail et UTF-8  UTF-8 est la lingua franca du web : cette méthode d'encodage permet d'utiliser s (...)
Support de l'UTF-8 dans divers clients MySQL  De nombreux clients (GUI) pour base de donnée MySQL prétendent un "support compl (...)
Comment to the DOMNamedNodeMap ->getNamedItem() page in the php.net manual  Basic example of use :< ? php(...)echo $doc->documentElement->attributes->getNam (...)

Easter Flakes • Flocons de Pâques | Nous contacter
© Easter Flakes - 2007. Tous droits réservés sur toutes images, textes et codes. Valid XHTML 1.0 Transitional