base64.rb

[2001/02/07] rubikitch

[2001/02/11] 荒井: 更新

定义了MIME Base64解码/编码方法。该库可兼作base64编码的范例脚本。

Base64是一种编码方法, 它只用ASCII码中的65个字符(包括[A-Za-z0-9+/]这64个字符和用作padding的'=')将3字节(8bits * 3 = 24bits)的二进制代码变为4字节(6bits * 4 = 24bits)的可印刷字符串。RFC 2045文件对其做出了详细的规定。

使用方法

irb> require 'base64'
true
irb> b64encode("日本语")
xvzL3Ljs
"xvzL3Ljs\n"
irb> decode64('xvzL3Ljs')
"日本语"
irb> decode_b("日本语")
xvzL3Ljs
"日本语"
irb> decode_b("=?ISO-2022-JP?B?QyAbJEI4QDhsJV0lJCVzJT80MEE0QClHRhsoQg==?=")
"C 言语POINTER完全制霸"

函数

decode64(str)

对经过Base64编码的str字符串进行解码。

encode64(str)

str字符串进行Base64编码。

decode_b(str)

对包含RFC 2047中定义的encoded-word的str字符串进行解码。

encoded-word 是形如

"=?" + charset + "?" + encoding + "?" + encoded-text + "?="

的字符串, 通常出现在邮件头中。

该函数只支持"iso-2022-jp"和"shift_jis"类型的charset以及"B"-encoding (Base64)类型的encoding。

bug

实际上,该函数会在其内部调用Kconv.toeuc, 所以NKF模块会自动进行解码(请参考NKF的注意事项)。因此, 该函数几乎失去了存在的意义。(以前的Kconv并不使用NKF,所以才会出现这种局面)

b64encode(bin, len = 60)

bin字符串进行编码, 在长度为len的地方返回,并显示结果