ホームページ >バックエンド開発 >Golang >Base64 文字列をデコードするときに「入力バイト 4 に不正な Base64 データがあります」というエラーが発生するのはなぜですか?

Base64 文字列をデコードするときに「入力バイト 4 に不正な Base64 データがあります」というエラーが発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-29 16:24:10645ブラウズ

Why Am I Getting an

例外: 入力バイト 4 の Base64 データが不正です

base64.StdEncoding.DecodeString を使用して Base64 でエンコードされた文字列をデコードしようとすると、 「入力バイト 4 に不正な Base64 データがあります」エラーが発生する場合があります。このエラーは、データ URI スキームの不適切な処理が原因で発生します。

データ URI スキームは、外部リソースと同様に、Web ページ内でデータをインラインでエンコードします。形式は次のようになります。

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。