我使用Visual Studio 2010,C#用来阅读Gmail收件箱IMAP
,它可以作为一个魅力,但我认为统一是不完全支持,因为我不能让波斯语字符串容易。
比如我有我的字符串: سلام
,但IMAP
给我: "=?utf-8?B?2LPZhNin2YU=?="
我怎样才能将其转换为原始字符串? 从转换UTF-8字符串的任何提示?
我使用Visual Studio 2010,C#用来阅读Gmail收件箱IMAP
,它可以作为一个魅力,但我认为统一是不完全支持,因为我不能让波斯语字符串容易。
比如我有我的字符串: سلام
,但IMAP
给我: "=?utf-8?B?2LPZhNin2YU=?="
我怎样才能将其转换为原始字符串? 从转换UTF-8字符串的任何提示?
让我们来看看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解码库,但你可以这样实现自己或使用图书馆 。
他在这里
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);
}));
}