`atob` throws" Строка, которая должна быть декодирована, неправильно закодирована " - PullRequest
0 голосов
/ 03 мая 2020

У меня проблема с atob, который выдает исключение

Неправильно закодирована строка, которую нужно декодировать.

Уже есть некоторые вопросы, например это при переполнении стека, но они имеют дело со «сложными» проблемами (кодировка файла и / или URL), мой код намного проще:

atob("MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDEAA");

при длине строки 41, я пытался добавить 0,1,2 или 3 "=" безуспешно.
Ожидаемый результат (возвращаемый любым онлайн-декодером base64, который я тестировал) - простая строка:

0.05813049898 0.05554189906 1

Я попытался dGVzdA== или dGVzdA, и он правильно расшифрован как "тест".

Так в чем же очевидная проблема, за которую мне должно быть стыдно?

Если это имеет значение, я работает Chromium 81.

PS: я просто закодировал строку обратно (почему я не подумал об этом первым?). И похоже, что закодированная строка должна быть

MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDE=

, которая прекрасно декодируется.

atob("MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA2IDE=");

PS2: atob работает просто отлично. Это просто входная строка (и Apple), которая виновата в соответствии с http://www.monobjc.net/xib-file-format.html. Поэтому, если файл ile file.length% 4 == 1, я думаю, что ответ - просто удалить последний символ. 2 или 3 я не знаю

1 Ответ

1 голос
/ 03 мая 2020

Если вы btoa ожидаемого результата, вы получите:

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

, что отличается от вашей исходной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...