首页 >后端开发 >Golang >为什么在解码 Base64 字符串时出现'输入字节 4 处存在非法 Base64 数据”错误?

为什么在解码 Base64 字符串时出现'输入字节 4 处存在非法 Base64 数据”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-29 16:24:10656浏览

Why Am I Getting an

异常:输入字节 4 处存在非法 Base64 数据

尝试使用 base64.StdEncoding.DecodeString 解码 Base64 编码的字符串时,可能会出现“输入字节 4 处存在非法 base64 数据”错误。此错误源于对数据 URI 方案的不当处理。

数据 URI 方案在网页内内联编码数据,类似于外部资源。它们的格式类似于:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn