我正在使用编码和解码:
编码:
private string EncodeServerName(string ServerName)
{
byte[] NameEncodein = new byte[ServerName.Length];
NameEncodein = System.Text.Encoding.UTF8.GetBytes(ServerName);
string EcodedName = Convert.ToBase64String(NameEncodein);
return EcodedName;
}
和解码:
public string DecoAndGetServerName(string Servername)
{
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
System.Text.Decoder strDecoder = encoder.GetDecoder();
byte[] to_DecodeByte = Convert.FromBase64String(Servername);
int charCount = strDecoder.GetCharCount(to_DecodeByte, 0, to_DecodeByte.Length);
char[] decoded_char = new char[charCount];
strDecoder.GetChars(to_DecodeByte, 0, to_DecodeByte.Length, decoded_char,0);
string Name = new string(decoded_char);
return Name;
}
我发送ServerName:DEV-SQL1\SQL2008
编码为:REVWLVNRTDFcU1FMMjAwOA==
我想再次解码,但得到例外:排队:
byte[] to_DecodeByte = Convert.FromBase64String(Servername);
例外情况是:
`输入不是有效的Base-64字符串,因为它包含非基本64字符
填充字符中有两个以上的填充字符或非空白字符。
如何解决这个问题。
请帮帮我
答案 0 :(得分:20)
您的代码似乎过于复杂:-),这是一个有效的代码:
public static string EncodeServerName(string serverName)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(serverName));
}
public static string DecodeServerName(string encodedServername)
{
return Encoding.UTF8.GetString(Convert.FromBase64String(encodedServername));
}
答案 1 :(得分:0)
相同的代码适用于我,您使用DecoAndGetServerName()
编写。
问题是,您需要将ENCODED STRING
传递给DecoAndGetServerName()
函数,
可能编码如下:
string Servername=Convert.ToBase64String(Encoding.UTF8.GetBytes("serverName"));
这就是您收到错误The input is not a valid Base-64 string as it contains a non-base 64 character,...
的原因。