Использование atob Javascript для декодирования base64 неправильно декодирует строки utf-8
atob Javascript может правильно декодировать строки base64, которые были закодированы с символами ASCII, например, window.atob('YQ==') вернет ASCII символ «а». Однако он не будет правильно декодировать строки base64, закодированные с помощью символов Unicode UTF-8, например, window.atob('4pyTIMOgIGxhIG1vZGU=') вернет "⢠à la mode" вместо "✓ à la mode". .
Чтобы правильно декодировать строку base64, закодированную с помощью UTF-8, нам нужно использовать escape и unescape функции. В этом случае window.atob(unescape(encodeURIComponent('✓ в режиме'))) вернет '4pyTIMOgIGxhIG1vZGU=', а window.atob('4pyTIMOgIGxhIG1vZGU=') вернет '✓ в режиме'.
Другой вариант обработки входящего потока в кодировке Base64, чтобы он декодировался как utf-8. заключается в использовании класса TextDecoder. Этот класс предоставляет способ декодирования строки в кодировке Base64 в строку UTF-8. Вот пример его использования:
const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3