为何Python可解码该Base64字符串而Go报illegal base64 data错误?
问题原因分析
核心差异:Base64编码模式的不同
- Python的
b64decode()默认适配标准Base64编码(允许末尾的填充字符=),它会自动识别并处理合法的填充内容,所以能成功解码带==的目标字符串。 - Go的
base64.RawStdEncoding对应的是原始标准Base64编码,这种模式明确要求输入字符串不能包含填充字符=,而目标字符串//Py+vX7suTx8A==末尾带有两个填充=,不符合Raw模式的输入要求,因此触发"illegal base64 data"错误。
补充:Go的正确解码方式
如果要在Go中解码该带填充的字符串,应该使用支持填充的标准编码模式base64.StdEncoding,示例代码:
data, err := base64.StdEncoding.DecodeString("//Py+vX7suTx8A==") // 此时err为nil,data结果与Python解码一致
内容的提问来源于stack exchange,提问作者trueToastedCode
相关产品推荐
相关产品推荐

