遇到奇怪的 Ruby 编码问题:
有没有想法为什么这不对称!? 为什么'decode64_strict'根本不起作用?输入字符串在base64字母表中填充到多个4个字符。 这里是14 x 6位= 84位,即10 1/2个8位字节,即11个字节。 但解码后的字符串似乎删除了最后一个nybble? 我是否遗漏了一些明显的东西,还是这是一个错误? 解决方法? 参见http://www.ietf.org/rfc/rfc4648.txt。
ruby-1.9.2-p180 :618 > s = "a8dnsjg8aiw8jq".ljust(16,'=')
=> "a8dnsjg8aiw8jq=="
ruby-1.9.2-p180 :619 > s.size
=> 16
ruby-1.9.2-p180 :620 > s.unpack('m0')
ArgumentError: invalid base64
from (irb):631:in `unpack'
ruby-1.9.2-p180 :621 > s.unpack('m')
=> ["k\xC7g\xB28<j,<\x8E"]
ruby-1.9.2-p180 :622 > s.unpack('m').first.size
=> 10
ruby-1.9.2-p180 :623 > s.unpack('m').pack('m')
=> "a8dnsjg8aiw8jg==\n"
ruby-1.9.2-p180 :624 > s.unpack('m').pack('m') == s
=> false
有没有想法为什么这不对称!? 为什么'decode64_strict'根本不起作用?输入字符串在base64字母表中填充到多个4个字符。 这里是14 x 6位= 84位,即10 1/2个8位字节,即11个字节。 但解码后的字符串似乎删除了最后一个nybble? 我是否遗漏了一些明显的东西,还是这是一个错误? 解决方法? 参见http://www.ietf.org/rfc/rfc4648.txt。