Codificar y descodificar en base64
La función btoa del navegador solo admite latin-1 y se rompe con el primer acento. Aquí la cadena pasa por UTF-8 antes de codificarse, así que «déjà vu» vuelve intacto.
Cómo funciona la comprobación
- 1
El texto se convierte en bytes
Primero codificación UTF-8: es lo que preserva acentos, emojis e ideogramas.
- 2
Los bytes se convierten en base64
Tres bytes se transforman en cuatro caracteres de un alfabeto de 64 signos.
- 3
Variante URL-safe si hace falta
Los caracteres + y / pasan a ser - y _, y se elimina el relleno =.
El base64 no es cifrado
Es una codificación reversible sin clave: cualquiera la descodifica en un segundo. Sirve para hacer pasar bytes por un canal que solo acepta texto: un correo, una URL, un campo JSON. Meter ahí una contraseña equivale a escribirla en claro.
Otra consecuencia: el base64 engorda el dato alrededor de un tercio. Una imagen en data-URI pesa por tanto más que el archivo original.
Preguntas frecuentes
¿Por qué mis acentos se convierten en interrogantes en otras herramientas?
Porque codifican en latin-1 en vez de UTF-8. La función btoa del navegador lanza un error más allá del carácter 255; algunas implementaciones lo esquivan truncando, lo que destruye los caracteres acentuados.
¿Qué significan los signos = del final?
Son relleno. El base64 trabaja en grupos de tres bytes; cuando el último grupo está incompleto, uno o dos signos = completan el bloque. La variante URL-safe los quita y el descodificador los repone.
¿Cuándo conviene la variante URL-safe?
Siempre que la cadena viaje en una URL o en un nombre de archivo. Los caracteres + y / tienen allí significado propio y se reinterpretarían; - y _ pasan en cualquier sitio. Es la variante que usan los tokens JWT.
La misma comprobación por API
Esta herramienta se ejecuta en tu navegador. Para hacer la misma comprobación desde tu código, en masa o en servidor, la API responde en JSON.
Ver la documentación