Go语言中base64包提供标准编码解码功能,使用StdEncoding.EncodeToString将字节切片转为Base64字符串,如”Hello, 世界”编码为”SGVsbG8sios4lueVjA==”;对于URL场景应选用URLEncoding以避免特殊字符问题;解码时需用DecodeString并检查错误确保数据完整;还可使用RawStdEncoding去除填充符=,适用于JWT等协议;正确选择编码方式保障兼容性与安全性。
在Go语言中,encoding/base64 包提供了标准的Base64编码和解码功能,常用于将二进制数据转换为文本格式,便于在网络传输或配置文件中使用。下面介绍如何使用该包进行常见的编码与解码操作。
标准Base64编码
使用 base64.StdEncoding 可以对字节切片进行标准Base64编码。
data := []byte("Hello, 世界") encoded := base64.StdEncoding.EncodeToString(data) fmt.Println(encoded) // 输出: SGVsbG8sIOS4lueVjA==
EncodeToString 是常用方法,它接收字节切片并返回Base64字符串。
URL安全的Base64编码
当Base64字符串需要用于URL或文件名时,应使用 URL 安全编码(替换特殊字符 + 和 / 为 – 和 _)。
立即学习“go语言免费学习笔记(深入)”;
encodedURL := base64.URLEncoding.EncodeToString(data) fmt.Println(encodedURL) // 输出: SGVsbG8sIOS4lueVjA==
在大多数情况下,URLEncoding 和 StdEncoding 输出相同,但在包含特殊字符的数据中会体现差异。
Base64解码
解码时需处理可能的错误,例如输入字符串格式不正确或包含非法字符。
decoded, err := base64.StdEncoding.DecodeString(encoded) if err != nil { log.Fatal("解码失败:", err) } fmt.Printf("%sn", decoded) // 输出: Hello, 世界
DecodeString 返回字节切片和错误,务必检查错误以确保数据完整性。
自定义编码格式(可选)
Go 还支持自定义编码字符集,适用于特殊需求场景,如不带填充符的编码。
rawEncoding := base64.RawStdEncoding // 无填充 '=' rawEncoded := rawEncoding.EncodeToString(data) fmt.Println(rawEncoded) // 输出无等号结尾
Raw 编码常用于JWT等协议中,避免填充符带来的解析问题。
基本上就这些。掌握 StdEncoding、URLEncoding 和解码错误处理,就能满足大多数场景需求。注意选择合适的编码方式,保证数据兼容性和安全性。