PapaParse这个插件虽说强大,可以快速将CSV文件转为JSON格式来渲染表格,但是某些地方真的让人很难受,比如它自带的encoding配置只能对通过input上传的本地文件起作用,而通过URL远程取到的文件不支持:
encoding 本地文件编码,必须是FileReader支持的值
// csv --得到数据中文乱码-失败
Papa.parse(filePath, {
encoding: 'gb2312',
download: true,
complete: function (results) {
Heiho(results?.data)
}
})
优化插件是做不到,那办法只有一个了,先用XMLHttpRequest()获取到文件,然后再用FileReader()改变文件的编码,最后用PapaParse直接解析。
let request = new XMLHttpRequest()
request.open('GET', filePath, true) //目标url
request.responseType = 'blob'
request.onload = () => {
let file = request.response
console.log('csv filefilefile', file)
let reader = new FileReader()
reader.readAsText(file, 'GB2312') //写死编码格式
reader.onload = () => {
Papa.parse(reader.result, {
complete: function (results) {
Heiho(results?.data)
}
})
}
}
request.send()