我找不到 Convert From Base64 String 的错误
I can't find the mistake in Convert From Base64 String
我正在尝试从 Base64 字符串进行转换。我读到了 base64 是 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
这是我的字符串:
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
我找不到其他聊天记录。总是在可接受的喋喋不休之间。
我的代码是:
String codedBody = emailClass.Body.Replace("-", "+");
codedBody = codedBody.Replace("_", "/");
byte[] data = Convert.FromBase64String(codedBody);
emailClass.Body = Encoding.UTF8.GetString(data);
当我 运行 行 byte[] data = Convert.FromBase64String(codedBody);
我收到异常:
{"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters."}
我使用 de Repair Base64,网站将我的字符串拆分为两个有效的 base64String。
PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=
这是规则吗?当我有一个 =
时,我会滑掉我的字符串 ?
我承认我的方法需要改进,但我解决这个问题的方法是根据“=”拆分中间字符串,然后将“=”附加到每个新字符串上,创建一个简单的字符串数组base64 值然后你可以做你正常的 base64 解码就完成了!
我使用正则表达式 ([a-zA-Z0-9\+\/]*={0,3})
来获取有效的 Base64 字符串。
后来我添加了 de Base64 字符串。
String codedBody = emailClass.Body.Replace("-", "+");
codedBody = codedBody.Replace("_", "/");
byte[] DataBody = new byte[0];
try
{
byte[] data = Convert.FromBase64String(codedBody);
DataBody = AddBiteArray(DataBody, data);
}
catch(Exception e)
{
var GetBase64Maches = _regexTOGetBase64.Matches(codedBody);
foreach(Match Base64StringMatch in GetBase64Maches)
{
var Base64String = Base64StringMatch.Groups[1].Value;
byte[] data = Convert.FromBase64String(Base64String);
DataBody = AddBiteArray(DataBody, data);
}
}
emailClass.Body = Encoding.UTF8.GetString(DataBody);
codedBody 是:
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
和:
static byte[] AddBiteArray(Byte[] destino, Byte[] origem)
{
var retorno = new Byte[destino.Length + origem.Length];
destino.CopyTo(retorno, 0);
origem.CopyTo(retorno, destino.Length);
return retorno;
}
我正在尝试从 Base64 字符串进行转换。我读到了 base64 是 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
这是我的字符串:
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
我找不到其他聊天记录。总是在可接受的喋喋不休之间。
我的代码是:
String codedBody = emailClass.Body.Replace("-", "+");
codedBody = codedBody.Replace("_", "/");
byte[] data = Convert.FromBase64String(codedBody);
emailClass.Body = Encoding.UTF8.GetString(data);
当我 运行 行 byte[] data = Convert.FromBase64String(codedBody);
我收到异常:
{"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters."}
我使用 de Repair Base64,网站将我的字符串拆分为两个有效的 base64String。
PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=
这是规则吗?当我有一个 =
时,我会滑掉我的字符串 ?
我承认我的方法需要改进,但我解决这个问题的方法是根据“=”拆分中间字符串,然后将“=”附加到每个新字符串上,创建一个简单的字符串数组base64 值然后你可以做你正常的 base64 解码就完成了!
我使用正则表达式 ([a-zA-Z0-9\+\/]*={0,3})
来获取有效的 Base64 字符串。
后来我添加了 de Base64 字符串。
String codedBody = emailClass.Body.Replace("-", "+");
codedBody = codedBody.Replace("_", "/");
byte[] DataBody = new byte[0];
try
{
byte[] data = Convert.FromBase64String(codedBody);
DataBody = AddBiteArray(DataBody, data);
}
catch(Exception e)
{
var GetBase64Maches = _regexTOGetBase64.Matches(codedBody);
foreach(Match Base64StringMatch in GetBase64Maches)
{
var Base64String = Base64StringMatch.Groups[1].Value;
byte[] data = Convert.FromBase64String(Base64String);
DataBody = AddBiteArray(DataBody, data);
}
}
emailClass.Body = Encoding.UTF8.GetString(DataBody);
codedBody 是:
LS0tLS0tLS0tLS0tLS0tLSBBVEVOw4fDg08gLS0tLS0tLS0tLS0tLS0NCkVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCANCg0KcG9yIGZhdm9yIG7Do28gcmVzcG9uZGEuIA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNClVQVElNRSAtIE5vdGlmaWNhw6fDo28gZGUgTWFyY2HDp8OjbyBkZSBBdWxhDQoNCg0KKglBbHVubzogVEhJQUdPIFNPQVJFUyBNT1RBDQoqCUNvbnRyYXRvOiA1NDI1NDENCioJVW5pZGFkZTogVU5JREFERSBWRVNQQVNJQU5PDQoNCioJQXVsYTogQ09OVkVSU0FUSU9OIElJSQ0KKglEYXRhIGRhIEF1bGE6IDI3LzAzLzIwMjENCioJSG9yYSBkYSBBdWxhOiAxMjowMA0KDQoqCURhdGEgZGEgTWFyY2HDp8OjbzogMjUvMDMvMjAyMQ0KKglIb3JhIGRhIE1hcmNhw6fDo286IDIxOjE1DQoqCUZvbnRlOiBNeVVQVElNRSBvbmxpbmUNCg0KKglGb25lOiAzMTM2NDUxMDAwDQoqCVNpdGU6IGh0dHA6Ly93d3cudXB0aW1lLmNvbS5icg0KDQo=PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIj48L2hlYWQ+PGJvZHk+PEZPTlQgc3R5bGU9IkFyaWFsIiBzaXplPSIyIj48ZGl2Pi0tLS0tLS0tLS0tLS0tLS0gPHN0cm9uZz5BVEVOw4fDg088L3N0cm9uZz4gLS0tLS0tLS0tLS0tLS08YnIgLz4gIEVzdGEgw6kgdW1hIG1lbnNhZ2VtIGF1dG9tw6F0aWNhLCA8L2Rpdj48ZGl2PjxwPnBvciBmYXZvciBuw6NvIHJlc3BvbmRhLiA8YnIgLz4gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+ICAgIDxzdHJvbmc+PGJyIC8+ICAgICAgPHN0cm9uZz5VUFRJTUUgLSBOb3RpZmljYcOnw6NvIGRlIE1hcmNhw6fDo28gZGUgQXVsYTwvc3Ryb25nPjwvc3Ryb25nPjxiciAvPjwvZGl2Pjx1bD48bGk+PGI+QWx1bm86PC9iPiBUSElBR08gU09BUkVTIE1PVEE8L2xpPjxsaT48Yj5Db250cmF0bzo8L2I+IDU0MjU0MTwvbGk+PGxpPjxiPlVuaWRhZGU6PC9iPiBVTklEQURFIFZFU1BBU0lBTk88L2xpPjwvdWw+PHVsPjxsaT48Yj5BdWxhOjwvYj4gQ09OVkVSU0FUSU9OIElJSTwvbGk+PGxpPjxiPkRhdGEgZGEgQXVsYTo8L2I+IDI3LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIEF1bGE6PC9iPiAxMjowMDwvbGk+PC91bD48dWw+PGxpPjxiPkRhdGEgZGEgTWFyY2HDp8Ojbzo8L2I+IDI1LzAzLzIwMjE8L2xpPjxsaT48Yj5Ib3JhIGRhIE1hcmNhw6fDo286PC9iPiAyMToxNTwvbGk+PGxpPjxiPkZvbnRlOjwvYj4gTXlVUFRJTUUgb25saW5lPC9saT48L3VsPjx1bD48bGk+PGI+Rm9uZTo8L2I+IDMxMzY0NTEwMDA8L2xpPjxsaT48Yj5TaXRlOjwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy51cHRpbWUuY29tLmJyIj5odHRwOi8vd3d3LnVwdGltZS5jb20uYnI8L2E+PC9saT48L3VsPjwvRk9OVD48L2JvZHk+PC9odG1sPg==
和:
static byte[] AddBiteArray(Byte[] destino, Byte[] origem)
{
var retorno = new Byte[destino.Length + origem.Length];
destino.CopyTo(retorno, 0);
origem.CopyTo(retorno, destino.Length);
return retorno;
}