Насколько хорошо UTF-8 поддерживается в электронной почте? - PullRequest
8 голосов
/ 12 апреля 2009

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

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

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

Ответы [ 3 ]

8 голосов
/ 12 апреля 2009

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

Плюс, википедия говорит:

Консорциум Интернет-почты (IMC) рекомендует, чтобы все почтовые программы были возможность отображать и создавать почту с помощью UTF-8.

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

3 голосов
/ 12 апреля 2009

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

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

0 голосов
/ 31 октября 2014

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

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...