golang非法base64数据在输入字节[重复]

xdnvmnnf  于 2023-04-18  发布在  Go
关注(0)|答案(1)|浏览(445)

此问题已在此处有答案

Illegal base64 data at input byte 4 when using base64.StdEncoding.DecodeString(str)(4个答案)
Illegal base64 data at input byte 68(1个答案)
昨天关门了。
巨蟒

>>> print(base64.b64decode('//Py+vX7suTx8A=='))
b'\xff\xf3\xf2\xfa\xf5\xfb\xb2\xe4\xf1\xf0'

走吧

>>> data, err := base64.RawStdEncoding.DecodeString("//Py+vX7suTx8A==")
err -> illegal base64 data at input byte 14

为什么Python可以解码这个字符串,而Go失败了?

dojqjjoe

dojqjjoe1#

RawStdEncoding,顾名思义,接受“原始”base64编码的字符串。另一方面,你使用的字符串用2个“=”填充。尝试删除它们,你应该不会得到错误:

data, err := base64.RawStdEncoding.DecodeString("//Py+vX7suTx8A") // no paddings
    if err != nil {
        fmt.Printf("err: %v\n", err)
    }

    fmt.Printf("data: %v\n", data)

正如@JimB所说,如果你想解码填充字符串,只需使用base64.StdEncoding和填充版本。

data, err := base64.StdEncoding.DecodeString("//Py+vX7suTx8A==")
    if err != nil {
        fmt.Printf("err: %v\n", err)
    }

    fmt.Printf("data: %v\n", data)

相关问题