如何解码“=?UTF-8?B'......?=”字符串在C#(How to Decode “

2019-06-25 00:19发布

我使用Visual Studio 2010,C#用来阅读Gmail收件箱IMAP ,它可以作为一个魅力,但我认为统一是不完全支持,因为我不能让波斯语字符串容易。

比如我有我的字符串: سلام ,但IMAP给我: "=?utf-8?B?2LPZhNin2YU=?="

我怎样才能将其转换为原始字符串? 从转换UTF-8字符串的任何提示?

Answer 1:

让我们来看看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现在应该包含所需的结果。


这种格式的描述可以在维基百科中找到:

  • http://en.wikipedia.org/wiki/MIME#Encoded-Word


Answer 2:

你有什么是MIME编码字符串。 .NET不包括MIME解码库,但你可以这样实现自己或使用图书馆 。



Answer 3:

他在这里

    public static string Decode(string s)
    {
        return String.Join("", Regex.Matches(s ?? "", @"(?:=\?)([^\?]+)(?:\?B\?)([^\?]*)(?:\?=)").Cast<Match>().Select(m =>
        {
            string charset = m.Groups[1].Value;
            string data = m.Groups[2].Value;
            byte[] b = Convert.FromBase64String(data);
            return Encoding.GetEncoding(charset).GetString(b);
        }));
    }


文章来源: How to Decode “=?utf-8?B?…?=” to string in C#