2012-01-30 65 views
8

在我工作的公司,我们有班级可以转换成Base64字符串。当我第一次看到代码时,我问为什么不使用.NET附带的Convert.ToBase64String?Base64是否标准化?

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

我试过使用ASCII,UTF8,Unicode和UTF32。

我不记得确切,但我认为ASCII生成一个长度相同但字符串不同的字符串,而其他字符生成更大的字符串。

也许我们的实现是错误的,但是我发现一个与我们相匹配的JavaScript实现。

不是Base64便携式?

编辑:我发现这个在维基百科,但我不知道这是否是原因http://en.wikipedia.org/wiki/Base64#Implementations_and_history

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

+0

我认为这是,所以我看这个感兴趣。 – Archer 2012-01-30 10:11:36

+0

这听起来像是因为某种原因他们正在使用自定义实现。 http://tools.ietf.org/html/rfc4648 – Will 2012-01-30 10:13:37

+4

将字节序列转换为Base64字符串不涉及ASCII,UTF-8或Unicode。 – dtb 2012-01-30 10:18:07

回答

10

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

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

+5

已废弃:4648 – dtb 2012-01-30 10:15:03