JavaScript y UTF-8
Los navegadores ofrecen btoa() y atob(), pero esas funciones trabajan con cadenas parecidas a bytes. Pasar texto chino o emoji directamente puede lanzar errores o corromper caracteres.
Usar bytes UTF-8
Convierte texto con TextEncoder antes de codificar y con TextDecoder después de decodificar. Así se conservan los datos multilingües.
const bytes=new TextEncoder().encode(text); const encoded=btoa(String.fromCodePoint(...bytes)); const decoded=new TextDecoder().decode(Uint8Array.from(atob(encoded),c=>c.charCodeAt(0)));Manejar archivos
Usa FileReader para vistas previas pequeñas o procesa ArrayBuffer por partes para archivos grandes. Evita crear cadenas intermedias enormes. Prueba con el codificador online.