В библиотеках фреймворка есть функциональные возможности для этого, но, похоже, они не выставлены полностью. Реализация находится во внутреннем классе System.Net.Mime.QuotedPrintableStream
. Этот класс определяет метод с именем DecodeBytes
, который делает то, что вы хотите. По-видимому, этот метод используется только одним методом, который используется для декодирования заголовков MIME. Этот метод также является внутренним, но вызывается довольно напрямую в нескольких местах, например, в установщике Attachment.Name
. Демонстрация:
using System;
using System.Net.Mail;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Attachment attachment = Attachment.CreateAttachmentFromString("", "=?iso-8859-1?Q?=A1Hola,_se=F1or!?=");
Console.WriteLine(attachment.Name);
}
}
}
Производит вывод:
¡Hola, _señor!
Возможно, вам придется провести некоторое тестирование, чтобы убедиться, что возврат каретки и т. Д. Обрабатываются правильно, хотя в ходе быстрого теста, который я сделал, они, похоже, были. Однако, возможно, не стоит полагаться на эту функциональность, если ваш вариант использования не достаточно близок к декодированию строки заголовка MIME, и вы не думаете, что она будет нарушена при любых изменениях в библиотеке. Возможно, вам лучше написать собственный декодер для печати на основе котировок.