各种电子邮件客户端支持UTF-8的程度如何?
我知道这在五年前有点问题 - 但是我们还应该担心它吗?
我想知道在发送之前是否应该将字符串重新编码为其他编码。例如,俄语文本将存储为UTF-8,但在发送电子邮件通知时,我可以像ISO-8859-5那样即时重新编码。
答案 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));
}
}
}