首頁 >後端開發 >Golang >為什麼在解碼 Base64 字串時出現「輸入位元組 4 處存在非法 Base64 資料」錯誤?

為什麼在解碼 Base64 字串時出現「輸入位元組 4 處存在非法 Base64 資料」錯誤?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-29 16:24:10650瀏覽

Why Am I Getting an

異常:輸入位元組4 處存在非法Base64 資料

嘗試使用base64.StdEncoding.DecodeString 解碼Base64 編碼的字串時,Base64可能會出現「輸入位元組4 處存在非法base64 資料」錯誤。此錯誤源自於對資料 URI 方案的不當處理。

數據 URI 方案在網頁內內嵌編碼數據,類似於外部資源。它們的格式類似:

data:[<MIME-type>][;charset=<encoding>][;base64],<data>

其中:

  • 指定資料的類型(例如image/png)
  • 表示字元編碼(可選)
  • ";base64"表示Base64編碼
  • ;包含以Base64 編碼的實際資料

要修正您場景中的問題,您必須在解碼之前從資料URI方案中擷取 Base64 編碼的資料。要實現此目的,請刪除逗號之前的前綴:

input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"
b64data := input[strings.IndexByte(input, ',') + 1:]

現在您有了 Base64 編碼的數據,可以成功解碼:

data, err := base64.StdEncoding.DecodeString(b64data)
if err != nil {
    fmt.Println("error:", err)
}
fmt.Println(data)

以上是為什麼在解碼 Base64 字串時出現「輸入位元組 4 處存在非法 Base64 資料」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn