【问题标题】:Cannot find the right encoding parameters (string to base64)找不到正确的编码参数(字符串到 base64)
【发布时间】:2025-12-29 02:55:16
【问题描述】:

以下字符串 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);

谢谢!

【问题讨论】:

  • 试试这个:string input = "amFuZUBkb2UuY29tOkpATjNEb2UxCg==";字符串输出 = Encoding.UTF8.GetString(Convert.FromBase64String(input));应该是从而不是到。
  • 不,你没有很好地理解。我正在尝试找到正确的方法来将 jane@doe.com:J@N3Doe1 编码为 amFuZUBkb2UuY29tOkpATjNEb2UxCg== @jdweng 谢谢!
  • @TheNoob:回复你的答案!
  • 使用逆过程得到64位字符串。

标签: c# string encoding utf-8 base64


【解决方案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==”。

【讨论】:

  • 那个新行字符。
  • 我注意到解码的输出包含换行符,所以我在调试器中检查了输出:)