找不到合适的编码参数(字符串到base64)

时间:2017-06-10 18:05:38

标签: c# string encoding utf-8 base64

以下字符串 amFuZUBkb2UuY29tOkpATjNEb2UxCg == 解码为 jane@doe.com:J @N3Doe1 (通过在线解码器)。

但是当我尝试将字符串编码回来(tobase64)时,我得到了不同的结果。我尝试过UT8,ASCII,Unicode。所有都有不同的结果。我正在使用C#。

   string str= u + ":" + v;
   byte[] rt = System.Text.ASCIIEncoding.ASCII.GetBytes(str.Trim());
   string t= Convert.ToBase64String(rt);

谢谢!

1 个答案:

答案 0 :(得分:1)

从你的base64字符串开始,这给了我们正确答案" jane@doe.com:J @ N3Doe1 \ n" (在线编码器没有清理你的行尾):

var test = "amFuZUBkb2UuY29tOkpATjNEb2UxCg==";
var output = Convert.FromBase64String(test);
foreach (var b in output){
    Console.Write((char)b);
}
Console.WriteLine();

回过头来,这会给出字符串" amFuZUBkb2UuY29tOkpATjNEb2UxCg ==":

var input = "jane@doe.com:J@N3Doe1\n";
var bytes = input.Select(c => (byte)c).ToArray();

var output = Convert.ToBase64String(bytes);
Console.WriteLine(output);

如果删除行尾,则会得到相同的字符串而不包含" Cg =="最后。