有谁可以帮助我在这里了解我们何时需要考虑 以下4种方法:
strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)
从文档中我也没有得到任何例子。这样的例子 解释可能对我有所帮助。
提前致谢
答案 0 :(得分:4)
_encode
和_decode
执行相反的操作:第一个将正常字符串转换为编码字符串,第二个将编码字符串转换为普通字符串。
str = "Hello!"
str == decode64(encode64(str)) # This is true
strict_
和urlsafe_
之间的差异是将在编码字符串中使用的字符。当您需要在URL中传递字符串时,不允许使用所有字符(例如/
,因为它在URL中具有特殊含义),因此您应该使用urlsafe_
版本。
答案 1 :(得分:4)
使用的一个例子是:
require "base64"
Base64.strict_encode64('Stuff to be encoded')
Base64.strict_decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==")
严格意味着在解码时拒绝白色空格/ CR / LF,并且在编码时不添加CR / LF。
请注意,如果接受以下内容:
Base64.decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
严格 由于尾随\n
(换行)而不接受上述内容,以下行将抛出ArgumentError: invalid base64
异常:< / p>
Base64.strict_decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
严格接受/只需要在解码时使用字母数字字符,并在编码时只返回字母数字。
请尝试以下操作,看看一个编码如何使用'\n'
(换行)每60个字符包裹一行, 严格 不会:
print Base64.encode64('I will not use spaces and new lines. I will not use spaces and new lines. I will not use spaces and new lines. I will not use spaces and new lines.I will not use spaces and new lines.')
print Base64.strict_encode64('I will not use spaces and new lines. I will not use spaces and new lines. I will not use spaces and new lines. I will not use spaces and new lines.I will not use spaces and new lines.')