【问题标题】:Is Base64 standardized?Base64是否标准化?
【发布时间】:2012-02-22 03:37:07
【问题描述】:

在我工作的公司中,我们有类可以与 Base64 字符串进行转换。第一次看到代码的时候,我问为什么不用.NET自带的Convert.ToBase64String?

然后我将方法体修改为只调用 Convert.ToBase64String,但它不会生成相同的字符串。

我尝试使用 ASCII、UTF8、Unicode 和 UTF32。

我记不太清了,但我认为 ASCII 生成的字符串长度相同,但有些字符不同,而另一些 Enconding 生成的字符串更大。

也许我们的实现是错误的,但我找到了一个与我们匹配的 JavaScript 实现。

Base64 不是可移植的吗?

编辑:我在 Wikipedia 上找到了这个,但我不知道这是否是原因 http://en.wikipedia.org/wiki/Base64#Implementations_and_history

Edit2:我提到编码是因为我们将一个字符串转换为另一个字符串。然后我需要首先使用某种编码将我的原始字符串转换为字节数组

【问题讨论】:

  • 我以为是,所以我正在饶有兴趣地看这个。
  • 是的,听起来他们可能出于某种原因正在使用自定义实现。 tools.ietf.org/html/rfc4648
  • 将字节序列转换为 Base64 字符串不涉及 ASCII、UTF-8 或 Unicode。
  • @dtb 我忘了说,我们使用的方法是将字符串转换为另一个字符串,而不是字节数组。
  • 一些代码会很有帮助:)

标签: c# javascript .net base64


【解决方案1】:

RFC 3548。不,等等!有一个更新的:RFC 4648。 (感谢 dtb!)

顺便说一句,您似乎在混合使用 base64,它将任何二进制流转换为 ASCII 流和字符编码,这是完全不同的概念。您可能想阅读 this introduction article 关于编码的内容。

【讨论】:

    【解决方案2】:

    至少有 10 种不同的实现。它们的主要区别在于索引 62 和 63 的字符。

    http://en.wikipedia.org/wiki/Base64#Implementations_and_history

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 2020-02-25
      • 2020-03-29
      • 2019-08-06
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-20
      相关资源
      最近更新 更多