Ruby 的 Base64

本文汇总 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

URL 安全变体

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

文件 I/O

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)

注意事项