Maison >développement back-end >Golang >Pourquoi est-ce que j'obtiens une erreur « Données Base64 illégales à l'octet d'entrée 4 » lors du décodage d'une chaîne Base64 ?

Pourquoi est-ce que j'obtiens une erreur « Données Base64 illégales à l'octet d'entrée 4 » lors du décodage d'une chaîne Base64 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-29 16:24:10699parcourir

Why Am I Getting an

Exception : données Base64 illégales à l'octet d'entrée 4

Lors de la tentative de décodage d'une chaîne codée en base64 à l'aide de base64.StdEncoding.DecodeString, un Une erreur « données base64 illégales à l’octet d’entrée 4 » peut se produire. Cette erreur provient d'une mauvaise gestion des schémas d'URI de données.

Les schémas d'URI de données encodent les données en ligne dans les pages Web, ressemblant à des ressources externes. Leur format ressemble à :

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

où :

  • spécifie le type de données (par exemple, image/png)
  • indique le codage des caractères (facultatif)
  • ";base64" signifie le codage Base64
  • contient les données réelles codées en Base64

Pour résoudre le problème dans votre scénario, vous devez extraire les données codées en base64 du schéma URI de données avant le décodage. Pour y parvenir, supprimez le préfixe jusqu'à la virgule :

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

Vous disposez désormais des données codées en base64, qui peuvent être décodées avec succès :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn