CSV 乱码问题
问题: cshtml中的table 导出为csv格式,用excel打开时,出现中文乱码
解决:这是由于 少了一个BOM头 “\ufeff“
var BOM = "\uFEFF";
var blob = new Blob([BOM + data],{ type: 'text/csv;charset:utf-8' });
saveAs(blob, "data export.csv");
问题:csv一般运用英文逗号“,”分列 “\n”分行, 但当用户输入中包含",""<"">"等特殊字符时,程序无法识别
解决:
var str = "col1,col2,col3\nvalue1,value2,value3";
str =encodeURIComponent(str);
或者将替换字符串重新赋值给自己
用户输入文本包含的逗号有两种情况,一种就是标点符号,还有一种是数学中的",",如(0,+0.04)
for (var i = 0; i < rows.length; i++) { //--循环所有的行
var cells = rows[i].cells;
for (var j = 0; j < cells.length; j++\) { //--循环所有的列
var cellstext = cells[j].innerHTML;
for (var k = 0; k < cellstext.length; k++) { //遍历该字符串每个字符,看是否有",",否则只会替换第一个","
cellstext = cellstext.replace(",", ","); //避免干扰分列,将英文逗号替换成中文逗号
cellstext = cellstext.replace("<", "<");
cellstext = cellstext.replace(">", ">");
}
data += cellstext + ","; //用","分列
}
data += "\n"; //用"\n"分行
}