Rumah > pembangunan bahagian belakang > Golang > Mengapakah `base64.StdEncoding.DecodeString()` Mengembalikan 'data base64 yang tidak sah'?

Mengapakah `base64.StdEncoding.DecodeString()` Mengembalikan 'data base64 yang tidak sah'?

Susan Sarandon
Lepaskan: 2024-12-07 15:12:13
asal
262 orang telah melayarinya

Why Does `base64.StdEncoding.DecodeString()` Return

Data Base64 Haram dalam base64.StdEncoding.DecodeString()

Apabila cuba menyahkod rentetan berkod Base64 menggunakan base64.StdStringEncoding.Decode (str), anda mungkin menghadapi ralat "data base64 haram pada input bait 4." Ralat ini biasanya berlaku apabila rentetan input tidak dikodkan dengan betul Base64.

Pertimbangkan kod berikut:

data, errBase := base64.StdEncoding.DecodeString(Base64Image)
if errBase != nil {
    fmt.Println("error:", errBase)
    return false
}
Salin selepas log masuk

Dalam kes ini, pembolehubah Base64Image mengandungi rentetan berkod Base64. Walau bagaimanapun, jika rentetan input juga mengandungi bahagian yang tidak dikodkan Base64, seperti awalan skema URI Data, proses penyahkodan mungkin gagal pada aksara bukan Base64 pertama yang ditemuinya.

Skim URI Data biasanya bermula dengan "data:" diikuti dengan jenis MIME, seperti "imej/png," dan mungkin termasuk rentetan ;base64. Untuk mengekstrak data yang dikodkan Base64 sebenar daripada URI Data, anda perlu mengalih keluar awalan sehingga koma (termasuk koma).

input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA"

b64data := input[strings.IndexByte(input, ',')+1:]
fmt.Println(b64data)
Salin selepas log masuk

Setelah anda mengekstrak data yang dikodkan Base64 tulen, anda kemudian boleh menyahkodnya menggunakan base64.StdEncoding.DecodeString().

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

Oleh mengasingkan data berkod Base64 dan menyahkodnya dengan betul, anda boleh mengelakkan ralat "data base64 haram" dan berjaya memproses data seperti yang dikehendaki.

Atas ialah kandungan terperinci Mengapakah `base64.StdEncoding.DecodeString()` Mengembalikan 'data base64 yang tidak sah'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan