在Golang的后端开发中,经常需要对二进制数据或者字符串进行Base64编码转换,比如处理接口传输的二进制内容、生成简单的令牌字符串等场景,标准库中的encoding/base64包就能满足这些需求,它提供了多种编码格式的实现,适配不同的使用场景。

encoding/base64包的核心编码类型
encoding/base64包提供了三种常用的编码方式,开发者可以根据实际场景选择:
- StdEncoding:标准Base64编码,使用+和/作为62、63位对应的字符,末尾用=填充
- URLEncoding:URL安全的Base64编码,把+替换为-,/替换为_,避免编码结果在URL传输中出现问题
- RawStdEncoding:无填充的标准Base64编码,和标准编码的区别是不在末尾添加=填充字符
Base64编码实现示例
标准编码示例
对普通字符串进行标准Base64编码的操作非常简单,只需要调用对应编码器的EncodeToString方法即可:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// 待编码的原始字符串
originStr := "Golang Base64编码测试"
// 使用标准编码器进行编码
encodeStr := base64.StdEncoding.EncodeToString([]byte(originStr))
fmt.Println("原始字符串:", originStr)
fmt.Println("标准编码结果:", encodeStr)
}
URL安全编码示例
如果编码结果需要放在URL中传输,就需要使用URLEncoding,避免特殊字符被URL解析规则处理:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
originStr := "测试URL安全编码+内容/部分"
// 使用URL安全编码器
urlEncodeStr := base64.URLEncoding.EncodeToString([]byte(originStr))
fmt.Println("原始字符串:", originStr)
fmt.Println("URL安全编码结果:", urlEncodeStr)
}
Base64解码实现示例
解码是编码的逆操作,只需要调用对应编码器的DecodeString方法,注意解码可能会返回错误,需要处理:
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// 标准编码后的字符串
encodeStr := "R29sYW5nIEJhc2U2NOe6p+e6v+afkQ=="
// 解码操作,需要处理错误
decodeBytes, err := base64.StdEncoding.DecodeString(encodeStr)
if err != nil {
fmt.Println("解码失败:", err)
return
}
fmt.Println("解码结果:", string(decodeBytes))
}
使用注意事项
- 编码的输入是字节切片,所以字符串需要先转换为[]byte类型,解码后的结果也是字节切片,需要转换为对应类型使用
- 解码时必须使用和编码时相同的编码器,比如用URLEncoding编码的内容,不能用StdEncoding解码,否则会返回错误
- 如果编码结果不需要填充字符,可以选择RawStdEncoding或者RawURLEncoding,避免末尾的=影响使用
常见问题解答
编码后的结果末尾为什么有=号
Base64编码会把3个字节转换为4个字符,如果原始字节数不是3的倍数,就会用=填充到4的倍数,保证编码结果长度符合规则,不使用填充的编码器就不会生成=号。
编码二进制文件需要注意什么
编码二进制文件时,只需要把文件内容读取为字节切片,再调用编码方法即可,但是Base64编码会让数据体积增加约1/3,不适合大文件的直接编码传输。
Golangencoding_base64Base64编码Base64解码修改时间:2026-07-13 18:12:27