@WiNNeR_tig

Как решить проблему с кириллицей и window.btoa?

Возникла проблема:

Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.


Нашёл такое решение:

Мини-библиотека base64.js (5kb), которая предварительно конвертирует строку в UTF-8.

Кодирование:

var value = Base64.encode('Текст');
console.log(value);


Декодирование:

var value = Base64.decode('0KLQtdC60YHRgiDRgSDRjdC80L7QtNC30Lgg8J+YgPCfmIPwn5iE');
console.log(value);


но тут тоже проблема:


Uncaught SyntaxError: Invalid regular expression: /[ГЂ-Гџ][ВЂ-Вї]|[Г -ГЇ][ВЂ-Вї]{2}|[Г°-Г·][ВЂ-Вї]{3}/: Range out of order in character class


Ссылка на скрипт оставлю в комментариях.
  • Вопрос задан
  • 5027 просмотров
Пригласить эксперта
Ответы на вопрос 3
@WiNNeR_tig Автор вопроса
Решение этой проблемы , просто поставил так
no_referer(window.btoa(unescape(encodeURIComponent('\\1'))));

Ничего не декодирую и не унскапирую, почему работает не пойму, ну и да ладно -)
Ответ написан
Комментировать
Lynn
@Lynn
nginx, js, css
Ответ написан
Комментировать
@grinat
Через decode uri только, из-за особенностей кодирования символ больше 255 не выйдет закодировать. И если либа по ссылке кодирует русский текст, то она кривая, потому что работает не по стандарту.

И вообще используй только window.atob, если под нодой то через buffer.toString('base64'), потому что реализаций дохрена, особенно на стаковерфлов, но они все кривые.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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