Bonjour,

J’essaie de faire un site PHP en chinois, j’avais déjà fait ça mais en ASP.net. Grâce à ce forum, j’ai pu résoudre pas mal de problème comme le codage à utiliser, la gestion des chaînes grâce à MBSTRING. Mais il subsiste un problème à mon site. C’est l’envoie d’email.

J’utilise la fonction MAIL et non MB_SEND_MAIL car j’ai lu que la seconde est réservée pour le Japonnais. J’ai mis des caractères chinois dans le sujet et le message.

Résultat : je reçois le mail, avec le message correctement encodé, mais pas le sujet.
(En fait le message fonctionne chez moi mais je suis pas sûr qu’il fonctionne réellement car j’avais eu le problème d’un gars en Chine qui ne pouvait pas lire les messages que je lui envoyais (asp.net))

Que dois-je faire pour que les 2 fonctionnent ?

Deuxième question plus philosophique : Qu’elles sont les contraintes d’utilisations de l’UTF-8 pour les types de langues ? Car je me dis que c’est finalement le codage le plus pratique puisqu’il permet d’utiliser toutes les langues (à moins que je me trompe). Pourquoi ne pas l’utiliser tout le temps ?

Merci beaucoup pour ce forum et pour vos futures réponse. Smiley cligne

Volfield
volfield a écrit :
Résultat : je reçois le mail, avec le message correctement encodé, mais pas le sujet.
(En fait le message fonctionne chez moi mais je suis pas sûr qu’il fonctionne réellement car j’avais eu le problème d’un gars en Chine qui ne pouvait pas lire les messages que je lui envoyais (asp.net))

Que dois-je faire pour que les 2 fonctionnent ?


Cela provient du fait que les déclarations d'encodage du corps de l'email, et celui du contenu des en-têtes de l'email suivent une logique différente.

Pour les en-têtes (dont le sujet de l'email donc), il faut l'encoder d'une certaine manière. Cela peut être réalisé avec la fonction mb_encode_mimeheader(), mais elle semble bugguée si j'en crois les commentaires sur cette page:
http://fr.php.net/manual/fr/function.mb-encode-mimeheader.php

a écrit :
Pourquoi ne pas l’utiliser tout le temps ?


La plupart du temps parce que certains outils/logiciels/... ne gèrent pas correctement l'utf-8 ou ne le gèrent pas du tout.
Merci bcp de ton aide, effectivement le type mime etait faux avec le code suivant ça marche beaucoup mieux.


$headers ='Content-type: text/html; charset=UTF-8' . "\r\n"; 

if(mail("email","test object : 于能力,多样性和","Message 于能力,多样性和于能力,多样性和",$headers))

Modifié par Raphael (17 Feb 2006 - 21:55)
Ayant le même problème (seul le corps du message apparaît en chinois) j'ai tester via un copier/coller le code cité. Mais cela n'a aucun effet chez moi.
J'ai aussi essayé en ajoutant mb_encode_mimeheader mais la solution a été trouvée grave à cette petite fonction qui convertie mes entités numériques (chinoises) en caractères normaux et depuis...ça marche !

function my_numeric2character($t)
{
   $convmap = array(0x0, 0x2FFFF, 0, 0xFFFF);
   return mb_decode_numericentity($t, $convmap, 'UTF-8');
}


Modifié par calahaan (22 Nov 2006 - 20:27)