Как расшифровать"=?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=
в вашем случае), а потом
-
отменить кодировку Base64
var bytes = Convert.FromBase64String("2LPZhNin2YU=");
-
интерпретируйте байты как строку UTF8
var text = Encoding.UTF8.GetString(bytes);
text
теперь должен содержать желаемый результат.
описание этого формата можно найти в Википедия:
У вас есть строка, закодированная MIME. .NET не включает библиотеки для декодирования MIME, но вы можете либо реализовать это сами или использовать библиотека.