3 回答
TA贡献1805条经验 获得超10个赞
DecodedLen返回最大长度。
此长度对于调整缓冲区大小很有用,但不会写入缓冲区的一部分,因此不会是有效的 UTF-8。
您必须仅使用Decode函数返回的实际写入长度。
l, _ := base64.StdEncoding.Decode(base64Text, []byte(message))
log.Printf("base64: %s\n", base64Text[:l])
TA贡献1825条经验 获得超6个赞
len 前缀是肤浅的,会导致无效的 utf-8 错误:
package main
import (
"encoding/base64"
"fmt"
"log"
)
func main() {
str := base64.StdEncoding.EncodeToString([]byte("Hello, playground"))
fmt.Println(str)
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
log.Fatal("error:", err)
}
fmt.Printf("%q\n", data)
}
输出
SGVsbG8sIHBsYXlncm91bmQ=
"Hello, playground"
编辑:我读得太快了,len 没有用作前缀。dystroy 做对了。
- 3 回答
- 0 关注
- 232 浏览
添加回答
举报