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 關注
- 269 瀏覽
添加回答
舉報