微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 CSV 字符集从 Shift-JIS 转换为 UTF-8 修改后的脚本:参考:

如何解决将 CSV 字符集从 Shift-JIS 转换为 UTF-8 修改后的脚本:参考:

我想做什么

  1. 从 CSV 文件获取数据(字符集:Shift-JIS)
  2. 将字符集转换为 UTF-8
  3. 将值设置到 Google 电子表格中

我在第 2 步遇到问题。

问题

我在将 Shift-JIS CSV 转换为 UTF-8 CSV 时遇到问题。
谷歌电子表格中的字符串都是乱码。

这是我的 Google 电子表格代码和屏幕截图:

function myFunction() {
  const fileId = 'xxxxxx' // Shift-JIS CSV file's ID
  const blob = DriveApp.getFileById(fileId).getBlob();
  const csv = blob.getDataAsstring();

  const newBlob = Utilities.newBlob('',MimeType.CSV).setDataFromString(csv,'UTF-8');
  const newCSV = newBlob.getDataAsstring();

  const values = Utilities.parseCsv(newCSV);

  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1,values.length,values[0].length).setValues(values);
}

预期:

Ideal

代替:

Actual

解决方法

我认为在您的脚本中,需要从文件(shift-jis 的 CSV 数据)中检索值作为 shift-jis。在这种情况下,不需要使用 const newBlob = Utilities.newBlob('',MimeType.CSV).setDataFromString(csv,'UTF-8');。所以当你的脚本被修改后,就变成了这样。

修改后的脚本:

function myFunction() {
  const fileId = 'xxxxxx' // Shift-JIS CSV file's ID
  const blob = DriveApp.getFileById(fileId).getBlob();

  const csv = blob.getDataAsString("shift-jis");  // Modified

  const values = Utilities.parseCsv(csv);
  const sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1,1,values.length,values[0].length).setValues(values);
}

参考:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。