Estoy atascado en un problema que no puedo entender. Obtuve una página HTML, declarando <meta charset="utf-8" /> , intentando crear y descargar un archivo de texto que contiene algunos caracteres UTF8. El texto se almacena dentro de una variable JS y estoy tratando de descargar el contenido de la variable como archivo de texto usando la API DataURI. Este es el código:
const myText = "àòùè"; const uriContent = "data:text/plain;charset=utf-8;base64," + btoa(myText); const element = document.createElement('a'); element.setAttribute('href', uriContent); element.setAttribute('download', "example_filename.log"); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element);El archivo resultante se guarda como ISO8859-15 y no en UTF-8 como se declara en dataURI. Da como resultado caracteres extraños debido a una codificación incorrecta.
La codificación se comprueba mediante el comando de file en UNIX:
file example_filename.log example_filename.log: ISO-8859 text