【问题标题】:prevent removing new lines from base64 string c#防止从base64字符串c#中删除新行
【发布时间】:2020-10-22 11:34:23
【问题描述】:

我正在尝试在 C# 中模拟 android Base64.encode。但是当我比较结果时,我意识到它们是不同的。 Android 结果在字符串末尾有一个/n,但我的结果没有:

Android Result: "gqo+8pdjV2VGRr2Ap5fzVzZTd2Q\n" 
C# Result:      "gqo+8pdjV2VGRr2Ap5fzVzZTd2Q="

如何防止在 C# 中从 base64 字符串中删除新行?

我在 C# 中使用了简单的 base64 转换,如下所示:

Convert.ToBase64String(data)

android 代码是这样的:

Base64.encodeToString(data,1)

【问题讨论】:

  • 自己添加换行符?我无法想象为什么将二进制数据转换为 base64 的方法会将不相关的字符附加到输出中......我的意思是它不是 C# 删除任何东西 - 它是添加它们的 android 函数。
  • 我没有看到没有标志的 Android 过载? developer.android.com/reference/android/util/…
  • 我无法自己添加。我不知道什么时候应该在字符串末尾添加新行。它不会一直发生。
  • 你想破坏 base64 字符串吗?如果您希望能够转换回字符串,则不能修改字符串。
  • @Evk "为什么将二进制数据转换为 base64 的方法会在输出中附加不相关的字符" : "必须表示编码的输出流 每行不超过 76 个字符。解码软件必须忽略表 1 中未找到的所有换行符或其他字符。” - RFC2045 p.24(我强调) -刚刚也知道了:))

标签: c# android base64


【解决方案1】:

Android 附加\n 字符,参见https://developer.android.com/reference/android/util/Base64

您可以使用以下标志 https://developer.android.com/reference/android/util/Base64#NO_WRAP 在 Android 中删除换行符

Base64.encodeToString(data, Base64.NO_WRAP)

C# 使用以下标志 https://docs.microsoft.com/en-us/dotnet/api/system.base64formattingoptions?view=netcore-3.1#fields 对数据进行编码

Convert.ToBase64String(data, Base64FormattingOptions.InsertLineBreaks)

但是 InsertLineBreaks 标志在每 76 个字符后添加 \n 字符,这看起来不像您的情况。

【讨论】:

  • thsnks。但根据文档在字符串表示中每 76 个字符后插入换行符。 base 64 字符串只有 28 个租船人!!!
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2011-12-10
相关资源
最近更新 更多