Как расшифровать"=?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, но вы можете либо реализовать это сами или использовать библиотека.