«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему `atob` Javascript не может правильно декодировать строки base64 UTF-8?

Почему `atob` Javascript не может правильно декодировать строки base64 UTF-8?

Опубликовано 9 ноября 2024 г.
Просматривать:133

Why does Javascript\'s `atob` fail to decode UTF-8 base64 strings properly?

Использование 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