错误原因:这个是因为编码的问题,其中=?utf-8?B是表示该段字符为UTF-8的格式,后面的是base64格式的内容。除了utf-8,还可以出现gb2312或者ibm-euccn等格式。为了转换上面的编码问题,我写了一个转码函数,如下所示。
复制代码 代码如下:
private string DecodeString(string input)
{
string regex = @"=\?(?<encode>.*?)\?B\?(?<body>.*?)\?=";
Regex re = new Regex(regex, RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline);
MatchCollection mcs = re.Matches(input);
foreach (Match mc in mcs)
{
string encode = mc.Groups["encode"].Value;
if (!string.IsNullOrEmpty(encode))
{
if (encode.ToLower().Contains("euccn") || encode.ToLower().Contains("euc-cn") ||
encode.ToLower().Contains("gbk"))
{
encode = "gb2312";
}
else if (encode.ToLower().Contains("utf8"))
{
encode = "utf-8";
}