1 回答
TA贡献1777条经验 获得超3个赞
标准 Base64 的字母表不包含反斜杠。因此输入不是有效的 Base64 编码字符串。qU4aaakFmjaaaaI5aaa\/EN\/aaa\/SaaaJaaa6aa+nGnk=
正斜杠是 Base64 中的有效字符,但不是反斜杠。可能是指定单个斜杠的序列。如果是这样,请将序列替换为单个序列,然后您就可以开始了。\/\//
例如:
s := `qU4aaakFmjaaaaI5aaa\/EN\/aaa\/SaaaJaaa6aa+nGnk=`
s = strings.ReplaceAll(s, `\/`, `/`)
dcd, err := base64.StdEncoding.DecodeString(s)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(dcd))
哪些输出(在Go Playground上尝试):
�Ni��6�i�9i����i��i��i��i��y
如果不是特殊序列,并且您希望从输入中丢弃所有无效字符,则可以按照以下方法完成此操作:\/
var valid = map[rune]bool{}
func init() {
for _, r := range "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" {
valid[r] = true
}
}
func clean(s string) string {
return strings.Map(func(r rune) rune {
if valid[r] {
return r
}
return -1
}, s)
}
func main() {
s := `qU4aaakFmjaaaaI5aaa\/EN\/aaa\/SaaaJaaa6aa+nGnk=`
s = clean(s)
dcd, err := base64.StdEncoding.DecodeString(s)
if err != nil {
log.Fatal(err)
}
fmt.Println(string(dcd))
}
Output is the same. Try this one on the Go Playground.
- 1 回答
- 0 关注
- 164 浏览
添加回答
举报