任何人都可以在這裏幫我瞭解,當我們需要考慮 以下4種方法:混淆的base64類方法的用法
strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)
從DOC我也沒有得到任何的例子。因此,帶有 解釋的示例可能對我的理解有幫助。
預先感謝
任何人都可以在這裏幫我瞭解,當我們需要考慮 以下4種方法:混淆的base64類方法的用法
strict_decode64(str)
strict_encode64(bin)
urlsafe_encode64(bin)
urlsafe_decode64(str)
從DOC我也沒有得到任何的例子。因此,帶有 解釋的示例可能對我的理解有幫助。
預先感謝
的_encode
和_decode
做相反的事情:第一個正常的字符串轉換成編碼的字符串,和第二個轉換的編碼的字符串轉換成正常的字符串。
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==")
嚴格裝置,其白空間/ CR/LF是在譯碼被拒絕,並在編碼不添加CR/LF。
注意,如果如下因素被接受:
Base64.decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
上述嚴格是不能接受的,因爲尾隨\n
(換行)和下面的行會拋出ArgumentError: invalid base64
異常:
Base64.strict_decode64("U3R1ZmYgdG8gYmUgZW5jb2RlZA==\n")
所以嚴格接受/只需要在解碼時的字母數字字符,並在編碼時只返回字母數字。
請嘗試以下,看看一個編碼包裝每60個字符的線條與'\n'
(換行)和嚴格沒有:
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.')
@iAmRubuuu增加了一個例子希望它有幫助 – 2013-03-08 19:59:49
@iAmRubuuu上述兩個例子都用於* str *,* bin *表示其他二進制表示被使用,但它仍然是一個字符串ex:'Base64.strict_encode64(「\ xaa \ xab \ xac \ xad「)',''Base64.strict_decode64(」\ x553R1ZmYgdG8gYmUgZW5jb2RlZA ==「)'注意在答案的例子中'U'被替換爲'\ x55' – 2013-03-09 06:55:11
什麼是[該文檔]不清楚( http://ruby-doc.org/stdlib-2.0/libdoc/base64/rdoc/Base64.html)? – steenslag 2013-03-08 19:32:19
文檔缺乏示例。那裏只有幾句話。因此無法理解它的用法。它實際上意味着什麼樣的嚴格性,普通的「編碼」和「解碼」不能做什麼? – 2013-03-08 19:33:54