base64.StdEncoding.DecodeString() 中存在非法 Base64 数据
尝试使用 base64.StdEncoding.DecodeString 解码 Base64 编码的字符串时(str),您可能会遇到错误“输入字节处存在非法base64数据” 4.”当输入字符串未正确进行 Base64 编码时,通常会发生此错误。
请考虑以下代码:
data, errBase := base64.StdEncoding.DecodeString(Base64Image) if errBase != nil { fmt.Println("error:", errBase) return false }
在这种情况下,Base64Image 变量包含 Base64 编码的字符串。但是,如果输入字符串还包含非 Base64 编码的部分,例如 Data URI 方案前缀,则解码过程可能会在遇到第一个非 Base64 字符时失败。
数据 URI 方案通常以“data:”开头,后跟 MIME 类型,例如“image/png”,并且可能包含 ;base64 字符串。要从数据 URI 中提取实际的 Base64 编码数据,您需要删除逗号之前的前缀(包括逗号)。
input := "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYA" b64data := input[strings.IndexByte(input, ',')+1:] fmt.Println(b64data)
提取纯 Base64 编码数据后,您然后可以使用 base64.StdEncoding.DecodeString() 对其进行解码。
data, err := base64.StdEncoding.DecodeString(b64data) if err != nil { fmt.Println("error:", err) } fmt.Println(data)
通过隔离Base64编码的数据并正确解码,可以避免“非法base64数据”错误并成功处理所需的数据。
以上是为什么`base64.StdEncoding.DecodeString()`返回'非法base64数据”?的详细内容。更多信息请关注PHP中文网其他相关文章!