Base64EncodedString 不包括换行符

Base64EncodedString does not include NewLines

我在 Windows 10 上使用 .NET 核心 3.0 项目。我正在尝试使用以下代码将字符串编码为 base64:

var stringvalue = "Row1" + Environment.NewLine + "\n\n" + "Row2";
var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes(stringvalue));

encodedString 结果如下:

Um93MQ0KCgpSb3cy

字符串值为:

Row1\r\n\n\nRow2

但是,如果我将相同的值传递给此站点 (https://www.base64encode.org/),我会得到另一个结果:

Um93MVxyXG5cblxuUm93Mg==

在 visual studio 中,我尝试用 Unix lineendings 重新保存文件,但没有成功:

我希望字符串按照 https://www.base64encode.org 中的编码方式进行编码。有什么想法可以完成吗?

\r\n 将在网站上进行编码,这不是换行符,这是 4 个字符。有这个换行符分隔符复选框,表示您想要 windows 样式,以转换您的真实世界输入值:

Row1

Row2.

我猜你的\r\n\n\n只是一个错误,网站准备将其转换为\r\n\r\n而已。

从屏幕截图中,我可以看到您输入的字符串与您在 C# 代码中使用的字符串不同。您在 https://www.base64encode.org 中使用的字符串表示为 C# 字符串文字,如下所示:

"Row1\r\n\n\nRow2"
// or
@"Row1\r\n\n\nRow2"

所以回答你的问题:

I want the string to be encoded as how it´s done in https://www.base64encode.org. Any ideas how to get this done?

你应该做的:

var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes("Row1\r\n\n\nRow2"));

但这可能不是您真正想要的。您对 C# 代码的第一次尝试更可能是需要的,因为 that 实际上是一个回车 return 字符,后跟 3 个换行符。您在 https://www.base64encode.org 中输入的字符串只是反斜杠字符后跟字母 r(或 n)。

你不能真正使 https://www.base64encode.org 上的输出与 C# 输出相匹配,因为你只能在那里选择一种行分隔符。您只能编码 Row1\r\n\r\n\r\nRow2Row\n\n\nRow2。不过,您可以通过使用 https://www.base64decode.org.

解码输出来检查 C# 结果是否正确