Tengo un código para descargar el archivo CSV de algunos datos.
const rows = [ ["Html", "Css", "JavaScript"], ["C #", "C++", "Python"] ]; let csvContent = "data:text/csv;charset=utf-8," + rows.map(e => e.join(",")).join("\n"); const encodedUri = encodeURI(csvContent); const link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", "my_data.csv"); document.body.appendChild(link); // Required for FF link.click();Cuando elimino # carácter de los datos, todo funciona bien
Según tengo entendido, encodeURL no codifica símbolos especiales, por eso el atributo href incluye # symbhol e ignora todo lo que sigue.
Intenté usar Blob también pero no hubo resultado.
encodeURI() escapa todos los caracteres excepto:
AZ az 0-9 ; , / ? : @ & = + $ - _ . ! ~ * ' ( ) #Utilice encodeURIComponent en su lugar, pero solo en la parte de datos, no en toda la URL. También tenga en cuenta que para permitir que Excel divida los campos, tengo que usar el punto y coma, la coma no funciona, pero esto podría deberse a mi configuración regional.
const rows = [ ["Html", "Css", "JavaScript"], ["C #", "C++", "Python"] ]; let csvContent = rows.map(e => e.join(";")).join("\n"); const encodedUri = "data:text/csv;charset=utf-8," + encodeURIComponent(csvContent); const link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", "my_data.csv"); document.body.appendChild(link); // Required for FF link.click();