Вопрос: Насколько хорошо поддерживается UTF-8 в электронной почте?


Насколько хорошо поддерживается UTF-8 в различных почтовых клиентах?

Я знаю, что это была проблема около пяти лет назад, но разве нам все еще нужно беспокоиться?

Мне интересно, если я должен перекодировать строки в другую кодировку перед отправкой. Например, русский текст будет храниться как UTF-8, но при отправке уведомлений по электронной почте я мог бы просто перекодировать его на лету как ISO-8859-5.


8


источник


Ответы:


Вот сравнение  примерно каждого почтового клиента и поддерживает ли он UTF-8

Кроме того, википедия говорит:

Консорциум Internet Mail (IMC)   рекомендует всем программам электронной почты   возможность отображения и создания почты с использованием   UTF-8.

Но вы также можете отправить электронное письмо в нескольких форматах, если хотите.


8



Единственное место, где я нашел, где UTF-8 может быть проблематичным, - это Япония, где, по крайней мере, пару лет назад многие службы веб-почты и старые мобильные устройства все еще не могли справиться с этим плавно. Это немного грустно, особенно в том случае, когда наборы кодировок на разных языках (Shift-JIS, ISO-2022-JP и т. Д.) Являются одинаково ужасными.

Другие страны Восточной Азии с многобайтовыми наборами символов также могут быть затронуты.


3



сегодня, когда перекодировка русского текста 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/

Вот пример кода C # для проблемы с кодировкой ISO-8859-5 и рублевым валютным символом:

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

}


0