电子邮件中UTF-8的支持程度如何?

时间:2009-04-11 23:08:12

标签: email utf-8

各种电子邮件客户端支持UTF-8的程度如何?

我知道这在五年前有点问题 - 但是我们还应该担心它吗?

我想知道在发送之前是否应该将字符串重新编码为其他编码。例如,俄语文本将存储为UTF-8,但在发送电子邮件通知时,我可以像ISO-8859-5那样即时重新编码。

3 个答案:

答案 0 :(得分:8)

以下是几乎所有电子邮件客户端的comparison以及是否支持UTF-8

另外,维基百科说:

  

Internet Mail Consortium(IMC)   建议所有电子邮件程序   能够使用显示和创建邮件   UTF-8。

但如果您愿意,也可以发送多种格式的电子邮件。

答案 1 :(得分:3)

我发现UTF-8可能存在问题的唯一地方是日本,至少在几年前,许多网络邮件服务和较旧的移动设备仍无法顺利应对。这有点令人伤心,特别是因为原生的多字节编码(Shift-JIS,ISO-2022-JP等)统一可怕。

其他具有多字节字符集的东亚国家也可能受到影响。

答案 2 :(得分:0)

今天当重新编码俄语UTF-8文本为ISO-8859-5时,有可能出现新的UTF-8俄罗斯卢布货币字符U + 20BD RUBLE SIGN。这与ISO-8859-1(Latin1)中欧元货币字符支持的问题相同,我的意思是不支持。 我发现这些文章对电子邮件中的国际字符支持非常有帮助 http://kb.mailchimp.com/accounts/management/international-characters-in-mailchimp https://wordtothewise.com/2010/03/which-is-better-utf-8-or-iso/

以下是代码页ISO-8859-5和俄罗斯卢布货币字符问题的C#代码示例:

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

}