在C# ASP.NET中进行编码和解码?

8

i am using Encoding and decoding :

For Encoding:

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); 异常是:
`The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or a non-white space character among the padding characters.`
如何解决这个问题。
请帮助我。

在编码之后和解码之前记录/显示您的编码字符串。确保它完全相同。 - H H
2个回答

28

你的代码看起来过于复杂了 :-),这是一个可行的代码:

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));
}

0

对我而言,你写的DecoAndGetServerName()代码是可行的。

问题在于,你需要向DecoAndGetServerName()函数传递编码字符串

它可能像这样被编码:

string Servername=Convert.ToBase64String(Encoding.UTF8.GetBytes("serverName"));

这就是为什么你会收到那个错误 输入不是有效的 Base-64 字符串,因为它包含一个非 Base-64 字符,...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接