在Golang开发中,Base64常用于将二进制数据转成可打印字符串,方便在JSON、URL或文本协议中传输。标准库encoding/base64已经封装了全部细节,我们只需调用对应方法即可完成编码与解密。
一、Golang Base64基础编码与解码
最常用的方式是使用标准Base64编码表,对应base64.StdEncoding。下面的例子演示了如何将字符串进行编码,再还原为原始内容。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
// 原始字符串
src := "你好,Golang Base64"
// 标准Base64编码
encoded := base64.StdEncoding.EncodeToString([]byte(src))
fmt.Println("编码结果:", encoded)
// 标准Base64解码
decoded, err := base64.StdEncoding.DecodeString(encoded)
if err != nil {
fmt.Println("解码失败:", err)
return
}
fmt.Println("解码结果:", string(decoded))
}
二、URL安全的Base64编码
当Base64内容需要放在URL参数中时,标准编码里的加号与斜杠会被转义,此时应使用base64.URLEncoding,它将+和/分别替换为-和_。
package main
import (
"encoding/base64"
"fmt"
)
func main() {
data := []byte("user=admin&token=abc123/=")
// URL安全编码
urlSafe := base64.URLEncoding.EncodeToString(data)
fmt.Println("URL安全编码:", urlSafe)
// URL安全解码
raw, err := base64.URLEncoding.DecodeString(urlSafe)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("还原数据:", string(raw))
}
三、无填充模式与常用方法对比
某些场景要求去掉末尾的等号填充,可使用base64.RawStdEncoding。下面用表格列出常见编码器区别。
| 编码器 | 特点 | 适用场景 |
|---|---|---|
| StdEncoding | 标准字符集,带=填充 | 通用文本传输 |
| URLEncoding | URL安全字符集,带=填充 | URL参数 |
| RawStdEncoding | 标准字符集,无填充 | 长度敏感协议 |
| RawURLEncoding | URL安全字符集,无填充 | 精简URL参数 |
无填充编码示例
package main
import (
"encoding/base64"
"fmt"
)
func main() {
s := "no padding example"
enc := base64.RawStdEncoding.EncodeToString([]byte(s))
fmt.Println(enc)
dec, _ := base64.RawStdEncoding.DecodeString(enc)
fmt.Println(string(dec))
}
四、小结
使用Golang进行Base64编码与解密非常简单,核心就是选择合适的编码器并调用EncodeToString与DecodeString。实际项目中建议根据传输环境选用Std或URL系列,避免手动替换字符导致兼容问题。
GolangBase64编码encoding_base64修改时间:2026-07-25 21:12:29