如何转换引用打印字符串

Mar*_*lin 2 c# vb.net mime quoted-printable

我正在 .NET 中处理法语字符串\n解码邮件正文,我收到“Chasn=C3=A9 sur illet”\n我想得到“Chasn\xc3\xa9 sur illet”\n但我不\通过 2 天的网络搜索找到任何解决方案。

\n\n

C# 或 VB.NET\n有人可以帮助我吗?

\n\n

谢谢

\n

jst*_*ast 8

或者最简单的,只需使用我的MimeKit库中的QuotedPrintableDecoder

static string DecodeQuotedPrintable (string input, string charset)
{
    var decoder = new QuotedPrintableDecoder ();
    var buffer = Encoding.ASCII.GetBytes (input);
    var output = new byte[decoder.EstimateOutputLength (buffer.Length)];
    int used = decoder.Decode (buffer, 0, buffer.Length, output);
    var encoding = Encoding.GetEncoding (charset);
    return encoding.GetString (output, 0, used);
}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的其他答案假设解码的内容将为 ASCII 或 UTF-8,但情况不一定如此。您需要charsetContent-Type正在解码的 MIME 部分的标头获取参数。

当然...如果您不知道如何获取该信息,您可以简单地使用我很棒的MailKit库从 IMAP 获取 MIME 部分,并让它为您完成所有这些工作。