本文汇总 Ruby 标准库 Base64 模块的用法,涵盖常用 API、URL 安全变体、严格模式行为与简易文件 I/O 示例。
Ruby 在标准库中内置了 Base64,通过 require 'base64' 引入。
常用方法包括 encode64/decode64(带换行)、
strict_encode64/strict_decode64(不换行),以及 URL 安全的
urlsafe_encode64/urlsafe_decode64。
require 'base64'
text = 'Hello, world'
# Encodes with line wraps (MIME style)
b64_wrapped = Base64.encode64(text)
puts b64_wrapped
# Strict encode (no newlines)
b64 = Base64.strict_encode64(text)
puts b64 # SGVsbG8sIHdvcmxk
# Decode
decoded = Base64.decode64(b64)
puts decoded # Hello, world
require 'base64'
raw = 'token:id/123+scope'.b
url_b64 = Base64.urlsafe_encode64(raw)
puts url_b64 # dG9rZW46aWQvMTIzK3Njb3Bl
plain = Base64.urlsafe_decode64(url_b64)
puts plain # token:id/123+scope
require 'base64'
valid = 'SGVsbG8sIHdvcmxk'
puts Base64.strict_decode64(valid) # strict expects no whitespace
non_strict = "SGVsbG8s\nI Hdvcmxk=="
puts Base64.decode64(non_strict) # tolerates whitespace/newlines
begin
Base64.strict_decode64('@@invalid@@')
rescue ArgumentError => e
warn "Decode failed: #{e.message}"
end
require 'base64'
# Binary file → Base64 (strict, single line)
bin = File.binread('input.bin')
b64 = Base64.strict_encode64(bin)
File.write('output.txt', b64)
# Base64 → Binary file
b64_text = File.read('output.txt')
data = Base64.decode64(b64_text)
File.binwrite('restored.bin', data)
encode64 会插入换行;strict_encode64 不会。urlsafe_encode64/urlsafe_decode64 用 - _ 替代 + /。ArgumentError。String#b 或以二进制方式读写。