`atob` 抛出 "The string to be decoded is not correctly encoded"

`atob` throws "The string to be decoded is not correctly encoded"

我遇到了 atob 抛出异常的问题

The string to be decoded is not correctly encoded.

关于堆栈溢出已经有一些类似的问题,但它们处理的是 "complex" 问题(文件 and/or URL 编码)我的代码要简单得多:

atob("MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA");

由于字符串长度为 41,我尝试添加 0、1、2 或 3 个“=”,但没有成功。
预期结果(由我测试的任何在线 base64 解码器返回)是一个纯字符串:

0.05813049898 0.05554189906 1

我尝试了 dGVzdA==dGVzdA,它被正确解码为 "test"。

那么我应该感到羞耻的明显问题是什么?

如果这很重要,我是 运行 Chromium 81。

PS:我只是把字符串编码回来(为什么我一开始没有想到?)。看起来编码后的字符串应该是

MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDE=

解码正常。

atob("MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDE=");

PS2: atob 工作得很好。 根据 http://www.monobjc.net/xib-file-format.html,这应该归咎于输入字符串(和 Apple)。所以如果 ile file.length %4 == 1,我想答案只是去掉最后一个字符。 2 或 3 我不知道

如果你btoa你的预期结果,你会得到:

console.log(btoa("0.05813049898 0.05554189906 1"));

这与您的原始字符串不同。