我有從一些資料下載 CSV 檔案的代碼。
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();

當我從資料中洗掉 # 字符時,一切正常

據我所知encodeURL,不是對特殊符號進行編碼,這就是為什么 href 屬性包含#symbhol 并忽略它之后的所有內容。
我也嘗試使用Blob但沒有結果。
uj5u.com熱心網友回復:
來自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI?retiredLocale=it:
encodeURI() 轉義所有字符,除了:
A-Z a-z 0-9 ; , / ? : @ & = $ - _ . ! ~ * ' ( ) #
使用 encodeURIComponent 代替,但僅限于資料部分,而不是整個 url。另請注意,要讓 Excel 拆分欄位,我必須使用分號,逗號不起作用,但這可能是因為我的語言環境設定。
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/313602.html
標籤:javascript 文件 文件 下载
