以下の4つの方法をいつ検討する必要があるかを理解するために、ここで誰かが私を助けてくれませんか:
strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)
ドキュメントからも例は得られませんでした。したがって、説明付きの例は、理解するのに役立つ場合があります。
前もって感謝します
以下の4つの方法をいつ検討する必要があるかを理解するために、ここで誰かが私を助けてくれませんか:
strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)
ドキュメントからも例は得られませんでした。したがって、説明付きの例は、理解するのに役立つ場合があります。
前もって感謝します
_encode
とは反対のことを行います。_decode
最初のものは通常の文字列をエンコードされた文字列に変換し、2 つ目はエンコードされた文字列を通常の文字列に変換します。
str = "Hello!"
str == decode64(encode64(str)) # This is true
strict_
との違いurlsafe_
は、エンコードされた文字列内で使用される文字です。URL 内で文字列を渡す必要がある場合、すべての文字が許可されていないため (/
たとえば、URL では特別な意味があるため)、urlsafe_
バージョンを使用する必要があります。
使用例は次のとおりです。
require "base64"
Base64.strict_encode64('Stuff to be encoded')
Base64.strict_decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==")
Strict は、空白/CR/LF がデコード時に拒否され、CR/LF がエンコード時に追加されないことを意味します。
以下が受け入れられた場合は、次の点に注意してください。
Base64.decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
strictでは、末尾\n
(改行)のために上記は受け入れられず、次の行はArgumentError: invalid base64
例外をスローします。
Base64.strict_decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
したがって、strict はデコード時に英数字のみを受け入れ/期待し、エンコード時に英数字のみを返します。
'\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.')