You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Papa Parser解析CSV转JSON时日语字符乱码问题

解决Papa Parser解析日语CSV时的乱码问题

看来你碰到了编码配置和Worker模式冲突导致的日语字符乱码问题,我帮你梳理几个关键问题点和可行的解决方案:

首先你的代码里有个明显的语法错误——console.log(row)直接写在了配置对象里,这会打乱解析逻辑,得先修正这个。另外,Papa Parser的Worker模式在处理非UTF-8编码时存在局限性,这大概率是乱码的核心原因。

解决方案1:关闭Worker模式,直接指定Shift-JIS编码

Worker模式下,浏览器的Web Worker环境对encoding参数的支持有限,尤其是Shift-JIS这类非标准UTF编码。先尝试关闭Worker,调整代码如下:

Papa.parse("http://localhost:3000/readdata.csv", {
  download: true,
  header: true,
  encoding: 'Shift-JIS',
  step: function(row) {
    console.log(row); // 把日志逻辑放到step回调中
  },
  complete: function() {
    console.log("All done!");
  }
});

解决方案2:手动处理文件编码(适合必须用Worker的场景)

如果业务逻辑必须依赖Worker模式,可以先手动下载文件并解码成正确的字符串,再传给Papa Parser解析:

// 先下载文件为ArrayBuffer格式
fetch("http://localhost:3000/readdata.csv")
  .then(response => response.arrayBuffer())
  .then(buffer => {
    // 用Shift-JIS编码解码成字符串
    const decoder = new TextDecoder('shift-jis');
    const csvText = decoder.decode(buffer);
    
    // 用Worker模式解析字符串形式的CSV内容
    Papa.parse(csvText, {
      header: true,
      worker: true,
      step: function(row) {
        console.log(row);
      },
      complete: function() {
        console.log("All done!");
      }
    });
  });

额外检查点

  • 确认你的CSV文件实际编码确实是Shift-JIS:可以用Notepad++打开文件,查看「编码」菜单里的当前编码,避免配置的编码和文件实际编码不匹配。
  • 如果是在Node.js环境下使用Papa Parser,需要确保安装了iconv-lite依赖,Node端的非UTF编码处理依赖这个库。

内容的提问来源于stack exchange,提问作者Parth Raval

火山引擎 最新活动