Задать вопрос
@krekerov
Fullstack ninja

Почему не работает btoa('кириллица')?

Вот тут работает javascript.ru/forum/misc/9418-atob-btoa-i-unicode.html
у меня выдает ошибку Uncaught InvalidCharacterError: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
Что не так?
  • Вопрос задан
  • 21119 просмотров
Подписаться 3 Оценить Комментировать
Решения вопроса 1
smanioso
@smanioso
Отмечайте ответы на свои вопросы!
Все правильно - функция btoa должна получать на вход строку в Latin1.
Как вариант, использовать решение, опубликованное в MDN: https://developer.mozilla.org/en-US/docs/Web/API/W...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@antares4045
Только что сам столкнулся с аналогичной проблемой для basicAuth после пары экспериментов пришёл к выводу что для unicode строк используется композиция
btoa(unescape(encodeURIComponent(`${login}:${password}`)))

логином вида
:✓Сейчас будет кириллица в пароле: покайся, god damn!☸☹☺☻☼☾☿:
проблем не возникло (браузеры генерят тот же токен, что и этот код)
Ответ написан
Комментировать
vool
@vool
Разработчик
Кодируем:
btoa(unescape(encodeURIComponent(`hello лолваоп`)))

Выход:
'aGVsbG8g0LvQvtC70LLQsNC+0L8='

Декодируем:
decodeURIComponent(escape(atob('aGVsbG8g0LvQvtC70LLQsNC+0L8=')))

Выход:
'hello лолваоп'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы