Heim >Backend-Entwicklung >Golang >Warum gibt „base64.StdEncoding.DecodeString()' „ungültige Base64-Daten' zurück?

Warum gibt „base64.StdEncoding.DecodeString()' „ungültige Base64-Daten' zurück?

Susan Sarandon
Susan SarandonOriginal
2024-12-07 15:12:13298Durchsuche

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

Ungültige Base64-Daten in base64.StdEncoding.DecodeString()

Beim Versuch, eine Base64-codierte Zeichenfolge mit base64.StdEncoding.DecodeString zu dekodieren (str) kann der Fehler „Ungültige Base64-Daten am Eingabebyte 4“ auftreten. Dieser Fehler tritt normalerweise auf, wenn die Eingabezeichenfolge nicht ordnungsgemäß Base64-codiert ist.

Beachten Sie den folgenden Code:

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

In diesem Fall enthält die Base64Image-Variable eine Base64-codierte Zeichenfolge. Wenn die Eingabezeichenfolge jedoch auch Teile enthält, die nicht Base64-codiert sind, wie z. B. ein Daten-URI-Schema-Präfix, schlägt der Dekodierungsprozess möglicherweise beim ersten Nicht-Base64-Zeichen fehl, auf das er trifft.

Typischerweise ein Daten-URI-Schema beginnt mit „data:“, gefolgt von einem MIME-Typ, z. B. „image/png“, und kann eine ;base64-Zeichenfolge enthalten. Um die tatsächlichen Base64-kodierten Daten aus einem Daten-URI zu extrahieren, müssen Sie das Präfix bis zum Komma (einschließlich Komma) entfernen.

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

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

Sobald Sie die reinen Base64-kodierten Daten extrahiert haben, können Sie kann es dann mit base64.StdEncoding.DecodeString() dekodieren.

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

Durch Isolieren der Base64-kodierten Daten und Durch die korrekte Dekodierung können Sie den Fehler „Ungültige Base64-Daten“ vermeiden und die Daten wie gewünscht erfolgreich verarbeiten.

Das obige ist der detaillierte Inhalt vonWarum gibt „base64.StdEncoding.DecodeString()' „ungültige Base64-Daten' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn