在c#asp.net中编码和解码?

时间:2011-08-25 06:09:19

标签: c# asp.net

我正在使用编码和解码:

编码:

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字符

填充字符中有两个以上的填充字符或非空白字符。

如何解决这个问题。

请帮帮我

2 个答案:

答案 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,...的原因。