Как расшифровать"=?utf-8?Б?...?=" в строку в C#

Я использую Visual Studio 2010, C# для чтения входящих сообщений Gmail с помощью IMAP, Он работает как шарм, но я думаю, что Unicode не полностью поддерживается, поскольку я не могу легко получить персидские (фарси) строки.

например у меня есть строка: سلام, а IMAP дает мне: "=?utf-8?B?2LPZhNin2YU=?=".

как я могу преобразовать его в исходную строку? любые советы от преобразования UTF-8 в строку?

2 ответов


давайте посмотрим на значение кодировки MIME:

=?utf-8?B?...something...?=
    ^   ^
    |   +--- The bytes are Base64 encoded
    |
    +---- The string is UTF-8 encoded

Итак, чтобы расшифровать это, возьмите ...something... из строки (2LPZhNin2YU= в вашем случае), а потом

  1. отменить кодировку Base64

    var bytes = Convert.FromBase64String("2LPZhNin2YU=");
    
  2. интерпретируйте байты как строку UTF8

    var text = Encoding.UTF8.GetString(bytes);
    

text теперь должен содержать желаемый результат.


описание этого формата можно найти в Википедия:


У вас есть строка, закодированная MIME. .NET не включает библиотеки для декодирования MIME, но вы можете либо реализовать это сами или использовать библиотека.