首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Base64EncodedString不包括NewLines

Base64EncodedString不包括NewLines
EN

Stack Overflow用户
提问于 2019-12-02 16:40:29
回答 2查看 303关注 0票数 1

我在Windows10上使用了一个.NET核心3.0项目。我试图用下面的代码将一个字符串编码到base64:

代码语言:javascript
复制
var stringvalue = "Row1" + Environment.NewLine + "\n\n" + "Row2";
var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes(stringvalue));

然后,encodedString的结果如下:

代码语言:javascript
复制
Um93MQ0KCgpSb3cy

字符串值是:

代码语言:javascript
复制
Row1\r\n\n\nRow2

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

代码语言:javascript
复制
Um93MVxyXG5cblxuUm93Mg==

在visual studio中,我尝试用Unix行尾重新保存文件,但没有任何结果:

我希望字符串按照在https://www.base64encode.org中的操作方式进行编码。有什么办法来完成这件事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-02 16:50:55

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

代码语言:javascript
复制
"Row1\\r\\n\n\\nRow2"
// or
@"Row1\r\n\n\nRow2"

因此,要回答你的问题:

--我希望字符串按照在https://www.base64encode.org中的操作方式进行编码。有什么办法来完成这件事吗?

你应该这样做:

代码语言:javascript
复制
var encodedString = Convert.ToBase64String(Encoding.UTF8.GetBytes("Row1\\r\\n\n\\nRow2"));

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

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

票数 2
EN

Stack Overflow用户

发布于 2019-12-02 16:48:09

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

代码语言:javascript
复制
Row1

Row2.

我想您的\r\n\n只是一个错误,该网站准备将其转换为\r\n。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59143191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档