2009-04-11 5 views
7

Quanto è supportato UTF-8 in vari client di posta elettronica?Quanto è supportato UTF-8 nelle e-mail?

So che era un po 'un problema circa cinque anni fa - ma è ancora qualcosa di cui dovremmo preoccuparci?

Mi chiedo se dovrei ricodificare le stringhe su qualche altra codifica prima dell'invio. Ad esempio, il testo russo verrebbe memorizzato come UTF-8 ma quando si inviano notifiche e-mail, potrei semplicemente ricodificarlo al volo come ISO-8859-5.

risposta

8

Ecco una comparison di quasi tutti i client di posta elettronica e se supporta UTF-8

Inoltre, Wikipedia dice:

Internet Mail Consortium (IMC) raccomanda che tutti i programmi di posta elettronica siano in grado di visualizzare e creare messaggi utilizzando UTF-8.

Ma è anche possibile inviare un'e-mail in più formati, se lo si desidera.

+0

Sfortunatamente, il confronto non include le vecchie versioni. –

3

L'unico posto che ho trovato dove UTF-8 può essere problematico è il Giappone, dove almeno un paio di anni fa molti servizi di posta elettronica e vecchi dispositivi mobili non erano ancora in grado di far fronte senza problemi. È un po 'triste, soprattutto perché le codifiche native multibyte (Shift-JIS, ISO-2022-JP ecc.) Sono uniformemente orribili.

Anche altri Paesi dell'Asia orientale con set di caratteri multibyte possono essere interessati.

0

oggi quando si ricodifica il testo UTF-8 russo come ISO-8859-5 è rischioso alterare il nuovo carattere di valuta del rublo russo UTF-8 U + 20BD RUBLE SIGN. È lo stesso problema con il supporto dei caratteri in valuta euro in ISO-8859-1 (Latin1) che non è un supporto intendo. ho trovato questi articoli molto utili circa i caratteri internazionali sostengono in email http://kb.mailchimp.com/accounts/management/international-characters-in-mailchimp https://wordtothewise.com/2010/03/which-is-better-utf-8-or-iso/

Ecco un esempio di codice C# per il problema con la tabella codici ISO-8859-5 e russo carattere moneta rublo:

using System; 
using System.Text; 

namespace ConsoleApplication4 
{ 
class Program 
{ 
    static void Main(string[] args) 
    { 
     string russian_text = "Русский текст co знаком валюты рубля ₽"; 

     Console.OutputEncoding = Encoding.UTF8; 
     Console.WriteLine(russian_text); 

     var encoded_bytes = Encoding.Convert(Encoding.UTF8, Encoding.GetEncoding("ISO-8859-5"), Encoding.UTF8.GetBytes(russian_text)); 

     Console.OutputEncoding = Encoding.GetEncoding("ISO-8859-5"); 
     Console.WriteLine(Encoding.GetEncoding("ISO-8859-5").GetString(encoded_bytes)); 
    } 
} 

}