Titre d’un mail en cyrillique (russe) avec php

Voila un cas d’encoding un peu compliqué que j’ai démêlé :

Le but est d’envoyer par php un mail entièrement en cyrillique (sujet et body).

Le code de ma page php est en utf8 (ouf) et la chaîne aussi (ouf) mais le sujet d’un mail doit être dans un encodage tout autre, ni utf8, ni iso, mais un encodage fournit par mb_encode_mimeheader().

Php par défaut travail en iso 8859-1. La fonction mb_encode_mimeheader() attends donc par défaut de l’iso-8859-1.

Donc ce que je faisait avant pour de l’utf8 français c’était un utf8_decode pour passer en iso-8859-1 , puis je pouvais appeler mb_encode_mimeheader()  ce qui donnait :

mb_encode_mimeheader( utf8_decode  ("sujet"))



Ça passait très bien car convertir des accents français en iso-8859-1 ne posait aucun soucis.

Mais le russe est arrivé. Et impossible de convertir du cyrillique en iso-8859-1.

La solution est d’utiliser la fonction mb_internal_encoding avant l’appel à mb_encode_mimeheader :

mb_internal_encoding("UTF-8");
$sujet = mb_encode_mimeheader($sujet);



Et voilà un beau titre en Cyrillique !