📅  最后修改于: 2023-12-03 14:47:09.588000             🧑  作者: Mango
Ruby 模块 Base64 提供了一种简单的编码和解码方式,可以将任意字符串转换为可打印的 ASCII 字符。这个模块非常有用,因为大多数的邮件和传输协议都只支持 ASCII 字符。
要将一个字符串编码为 Base64 字符串,可以使用 Base64 模块的 encode64
方法,它的参数应该是一个 ASCII 字符串。下面是一个例子:
require 'base64'
puts Base64.encode64('hello world')
这个程序会输出 aGVsbG8gd29ybGQ=\n
。注意,Base64 编码后的字符串结尾通常包含一个换行符,这是因为许多传输协议要求每 76 个字符后换行,否则可能会出现字词断开的问题。
要将一个 Base64 字符串解码成一个 ASCII 字符串,可以使用 Base64 模块的 decode64
方法,它的参数应该是一个经过 Base64 编码的字符串。下面是一个例子:
require 'base64'
puts Base64.decode64('aGVsbG8gd29ybGQ=')
这个程序会输出 hello world
。注意,解码后得到的字符串不包含结尾的换行符。
有时候需要将 Base64 编码的字符串用作 URL 的一部分,这时候就需要进行 URL 安全的编码。URL 安全的编码会将字符 +
和 /
替换为 -
和 _
,而且会删除结尾的 =
。
要进行 URL 安全的 Base64 编码和解码,可以使用 Base64 模块的 urlsafe_encode64
和 urlsafe_decode64
方法。下面是一个例子:
require 'base64'
encoded = Base64.urlsafe_encode64('hello world')
puts encoded
decoded = Base64.urlsafe_decode64(encoded)
puts decoded
这个程序会输出下面的结果:
aGVsbG8gd29ybGQ
hello world
Base64 是一个简单但非常有用的编码标准,可以将任何类型的数据编码为 ASCII 字符。Ruby 的 Base64 模块为我们提供了非常方便的编码和解码接口,而且还支持 URL 安全的编码。如果你有需要在 ASCII 环境中传输或保存二进制数据,那么 Base64 可能会是很好的选择。