Base64 在 python 中编码字节,在 javascript 中解码不会返回原始字节



I在python中使用base64编码字节:

import base64
base64.b64encode(b"xacxd1%=xddxe7x18x8fxbcDrzxa3x8axacx8dTx88txcf7noxfbxa2x97CIx85xe4:xf2/xd8axb5xd2x82xa8xcex02Dfxd0?x06re>xb0x94];~xffx00cVxb5xe3xe8xd1xa0n").decode("utf-8")
# "rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg=="

但当我试图将其解码回javascript:中的字节时

atob("rNElPd3nGI+8RHJ6o4qsjVSICc83Cm/7opdDSYXkOvIv2GG10oKozgJEZtA/BnJlPrCUXTt+/wBjVrXj6NGgbg==")
// "¬Ñ%=Ýçx18x8F¼Drz£x8A¬x8DTx88tÏ7noû¢x97CIx85ä:ò/ØaµÒx82¨Îx02DfÐ?x06re>°x94];~ÿx00cVµãèÑ n"

我没有得到原始字节。如何使用javascript解码并将原始字节作为字符串?

atob将尝试将字节解码为文本,而不是将字节编码为Python中的b'...'

你问:How can I decode it with javascript and get the original bytes as a string?但我认为,你应该只使用字节,而不是将其转换为字符串。

所以我尝试了我的base-64解码工具。我认为它返回的字节数组满足您的要求(因为ac的意思是172(:[172, 209, 37, 61, 221, 231, 24, 143, 188, 68, 114, 122, 163, 138, 172, 141, 84, 136, 9, 207, 55, 10, 111, 251, 162, 151, 67, 73, 133, 228, 58, 242, 47, 216, 97, 181, 210, 130, 168, 206, 2, 68, 102, 208, 63, 6, 114, 101, 62, 176, 148, 93, 59, 126, 255, 0, 99, 86, 181, 227, 232, 209, 160, 110]

在这个工具中,我使用了js-base64包来解码它。但它是几年前开发的,我不知道现在是否有更好的解决方案。

最新更新