前端下载文件并按GBK编码解析内容

一、背景

因项目需要上传csv文件并显示曲线和表格,方案是上传文件,然后再将该文件下载下来解析,然后显示曲线和表格显示。

二、现状

上传文件没问题,后端返回文件链接后再下载,下载到文本后解析时出问题了。Windows系统编辑的csv文件,中文是GBK编码,从文件中得到文本,中文部分是乱码,原因是前端默认UTF-8编码。

三、方案

问了机器人,机器人给的第一个方案是iconv,依赖三方库,离线开发再麻烦了。

第二个方案,是以二进制方式下载到文件内容后指定编码进行处理,这个方案更合适,代码如下:

javascript 复制代码
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,功能还是很强大的,记录一下备忘。

相关推荐
MartinYeung513 小时前
[论文学习]AdInject:通过广告投放对Web代理发起真实世界黑盒攻击
前端·学习
用户21816970493014 小时前
Flutter (十六) 组件通信
前端
mONESY14 小时前
React 前端如何不傻等后端接口?
前端·javascript·后端
岁月留痕16814 小时前
6 Flutter 篇:Flutter 分层式架构设计
前端
乘风gg14 小时前
AI Coding:从单兵提效到多 Agent 的团队全链路协作模式
前端·ai编程·claude
万维易源14 小时前
免费药品信息查询:用API 读懂常用药
java·前端·数据库·药品信息·药品查询·药品查询api
勾勾圈圈蛋蛋14 小时前
Vue2 与 Vue3 响应式数据原理详解
前端
用户693717500138414 小时前
深夜炸场!DeepSeek 没发新模型,却重构了整个 Agent 生态
前端·后端·github
岁月留痕16814 小时前
16 实战项目一:实现暗黑模式
前端
岁月留痕16814 小时前
7 Flutter 篇:玩转组件(一)
前端