5

以下の4つの方法をいつ検討する必要があるかを理解するために、ここで誰かが私を助けてくれませんか:

strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)

ドキュメントからも例は得られませんでした。したがって、説明付きの例は、理解するのに役立つ場合があります。

前もって感謝します

4

2 に答える 2

4

_encodeとは反対のことを行います。_decode最初のものは通常の文字列をエンコードされた文字列に変換し、2 つ目はエンコードされた文字列を通常の文字列に変換します。

str = "Hello!"
str == decode64(encode64(str)) # This is true

strict_との違いurlsafe_は、エンコードされた文字列内で使用される文字です。URL 内で文字列を渡す必要がある場合、すべての文字が許可されていないため (/たとえば、URL では特別な意味があるため)、urlsafe_バージョンを使用する必要があります。

于 2013-03-08T19:27:56.883 に答える
4

使用例は次のとおりです。

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.')
于 2013-03-08T19:34:40.490 に答える