2009-04-11 3 views
7

Wie gut wird UTF-8 in verschiedenen E-Mail-Clients unterstützt?Wie gut wird UTF-8 in E-Mails unterstützt?

Ich weiß, dass es vor fünf oder fünf Jahren ein Problem war - aber sollten wir uns trotzdem Sorgen machen?

Ich frage mich, ob ich Strings in eine andere Codierung vor dem Senden neu codieren sollte. Zum Beispiel würde russischer Text als UTF-8 gespeichert werden, aber beim Senden von E-Mail-Benachrichtigungen könnte ich ihn einfach als ISO-8859-5 umcodieren. Hier

Antwort

8

ist ein comparison von fast jeder E-Mail-Client und ob es UTF-8 unterstützt

Plus wikipedia sagt:

Das Internet Mail Consortium (IMC) empfiehlt, dass alle E-Mail-Programmen können E-Mails mit UTF-8 anzeigen und erstellen.

Sie können aber auch eine E-Mail in mehreren Formaten senden, wenn Sie möchten.

+0

Leider enthält der Vergleich keine alten Versionen. –

3

Der einzige Ort, wo UTF-8 problematisch sein kann, ist Japan, wo vor einigen Jahren viele Web-Mail-Dienste und ältere mobile Geräte immer noch nicht reibungslos damit zurecht kamen. Es ist ein bisschen traurig, vor allem, da die nativen Multibyte-Kodierungen (Shift-JIS, ISO-2022-JP usw.) einheitlich schrecklich sind.

Andere ostasiatische Länder mit Multibyte-Zeichensätzen können ebenfalls betroffen sein.

0

heute, wenn russische UTF-8-Text als ISO-8859-5 neu zu kodieren ist es Risiko, neue UTF-8 russischen Rubel Währungszeichen U + 20BD RUBLE SIGN zu verschleiern. Es ist das gleiche Problem mit der Unterstützung von Euro-Währungszeichen in ISO-8859-1 (Latin1), was keine Unterstützung bedeutet. Ich habe diese Artikel sehr hilfreich, über internationale Zeichen gefunden Unterstützung in E-Mail http://kb.mailchimp.com/accounts/management/international-characters-in-mailchimp https://wordtothewise.com/2010/03/which-is-better-utf-8-or-iso/

Hier ist ein C# Codebeispiel für Problem mit Codepage ISO-8859-5 und russischer Rubel-Währung ist:

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)); 
    } 
} 

}