Me enfrento a un nuevo tipo de error y estoy un poco atascado aquí. Tengo un editor de código ligero en mi aplicación y envío su contenido (escrito por el usuario) a mi back-end, codificándolo en base64. Primero usé codeContent.toString("base64"); método y funcionó de maravilla con este tipo de contenido de prueba:
let numberTest = 52; let arrayTest = [63, 24, 75]; let sumTest = numberTest + arrayTest[0];El problema aquí es que no puedo decodificarlo de nuevo a UTF-8 cuando quiero recuperar este código de mi API, obtengo un poco de galimatías.
Así que probé este método en su lugar: atob(codeContent); . En este caso, si escribo un texto simple como : test , la versión codificada se ve bien ( µë- ), pero el contenido aún está vacío en mi backend después de mi POST. Y si pruebo esto con una línea simple de JS como let testNumber = 52; , luego aparece este error: "DOMException: la cadena contiene un carácter no válido"
Para resumir: estoy un poco perdido, ¿cuál es la buena manera de codificar mi texto en base64 y recuperarlo después?
Mi problema fue que entendí atob y btoa mal: pensé que b toa estaba decodificado DESDE base64, pero es al revés. Entonces, codificando TO base64:
btoa(unescape(encodeURIComponent(str)));Y decodificando base64:
decodeURIComponent(escape(window.atob(str)));