非 base64 字符串按原样处理

Non-base64 string is treated like it is

美好的一天!

我有一个 base64 编码的 ID,其路径类似于“/some/path/ok”

L3NvbWUvcGF0aC9vaw==

当我尝试解码时 - 它应该是正常的。

有时我会在我的函数中输入一些错误的数据,例如:

5b835b45b2de7748459a1183

它不是base64编码的字符串,但我的代码和golang解码器说没问题:

s, err:= base64.URLEncoding.DecodeString("5b835b45b2de7748459a1183")

有什么方法可以确保给定的字符串是不是 base64?或者我必须依赖一些其他工具,比如解码后检查路径?

5b835b45b2de7748459a1183 是一个有效的 base64 字符串,所以你不能对它做任何事情。有一个输入数据,其base64编码形式就是这样。

这与 Go 或处理 base64 字符串无关,这很可能是生成此文本的源中的错误。这很可能是某些数据的十六进制表示(可选地进行其他转换)。如果源代码生成的不是 base64,则必须修复源代码,或者必须使用正确的解码算法(在这种情况下不是 base64)。

没有。检查字符串是否为 base64 的正确方法是使用 DecodeString 方法的错误,因为如果它不是 base64,它将失败。这也是做事的方法。

重要的是要注意该字符串可以是 base64 字符串并且没有您需要的信息(这里似乎就是这种情况)。在这种情况下,我建议您在使用结果之前对其进行清理(检查它是否有效 file/folder 就可以了)。