前端下载文件并按GBK编码解析内容
一、背景
因项目需要上传csv文件并显示曲线和表格,方案是上传文件,然后再将该文件下载下来解析,然后显示曲线和表格显示。
二、现状
上传文件没问题,后端返回文件链接后再下载,下载到文本后解析时出问题了。Windows系统编辑的csv文件,中文是GBK编码,从文件中得到文本,中文部分是乱码,原因是前端默认UTF-8编码。
三、方案
问了机器人,机器人给的第一个方案是iconv,依赖三方库,离线开发再麻烦了。
第二个方案,是以二进制方式下载到文件内容后指定编码进行处理,这个方案更合适,代码如下:
axios.get(url,{responseType:'blob'}).then(blob => {// 按GBK编码解析const reader = new FileReader();reader.readAsText(blob, 'GBK');// 解析成功的回调reader.onload = () => {// 按换行符分割字符串let datas = reader.result.split(/[(\r\n)\r\n]+/);// 遍历数据datas.forEach((item, index) => {// 处理数据即可});};
});
四、结束
第一次使用blob和FileReader,功能还是很强大的,记录一下备忘。