Руководства по Base64

Наборы символов UTF-8

Base64 кодирует байты, а не символы. UTF-8 сначала превращает символы в один или несколько байтов; китайские символы и emoji занимают несколько. Несовпадение вызывает mojibake или ошибки декодирования.

Выберите явный charset

Документируйте UTF-8 на границах браузера, API и базы данных. Сначала декодируйте Base64 в байты, затем интерпретируйте эти байты как UTF-8.

Как обнаружить несовпадение

Если ASCII работает, а текст с акцентами нет, проверьте объявленный charset, преобразование переносов строк и вариант Base64 или Base64URL. Сравните длины в байтах.

Практическая проверка

Закодируйте café / 世界 / 🚀 через текстовый кодировщик, затем декодируйте и сравните исходные символы.