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

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-01 00:40:11730ブラウズ

Why Am I Getting a

Base64 デコード エラー: 「入力バイト 4 の Base64 データが不正です」

base64.StdEncoding を使用して Base64 でエンコードされた文字列をデコードしようとしたとき.DecodeString(str) を使用すると、次のエラーが発生する可能性があります: 「不正なbase64」入力バイト 4 のデータ。」このエラーは、指定された入力が有効な Base64 形式ではないことを示します。

あなたの場合の問題は、Base64 エンコード自体ではなく、入力文字列にあります。純粋な Base64 文字列の代わりに、データ URI スキームをデコードしようとしています。

データ URI スキームは、Web ページ内のデータをインライン コンテンツとして表し、これに続きます。 format:

data:[][;charset=][;base64],

あなたの場合、入力はimage/png MIME タイプと Base64 でエンコードされたデータを含むデータ URI スキーム。デコードするには、まず Base64 部分を抽出する必要があります。

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

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

出力:

iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA

これで、抽出された Base64 文字列をデコードできるようになります:

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

出力:

[137 80 78 71 13 10 26 10 0 0 0 13 73 72 68 82 0 0 0 100 0 0 0 100 8 6 0]

Data から Base64 データを抽出することによってURI スキームとデコード プロセスを実行すると、Base64 でエンコードされたコンテンツを正常にデコードできます。

以上がデータ URI をデコードするときに「入力バイト 4 に不正な Base64 データがあります」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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