将 CSV 字符集从 Shift-JIS 转换为 UTF-8
Convert CSV charset from Shift-JIS to UTF-8
我想做什么
- 从 CSV 文件中获取数据(字符集:Shift-JIS)
- 将字符集转换为 UTF-8
- 将值设置到 Google 电子表格
我在第 2 步遇到问题。
问题
我在将 Shift-JIS CSV 转换为 UTF-8 CSV 时遇到问题。
Google Spread Sheets 中的字符串都是乱码。
这是我的代码和 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);
}
预期:
而不是:
我认为在您的脚本中,需要从文件(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);
}
参考:
我想做什么
- 从 CSV 文件中获取数据(字符集:Shift-JIS)
- 将字符集转换为 UTF-8
- 将值设置到 Google 电子表格
我在第 2 步遇到问题。
问题
我在将 Shift-JIS CSV 转换为 UTF-8 CSV 时遇到问题。
Google Spread Sheets 中的字符串都是乱码。
这是我的代码和 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);
}
预期:
而不是:
我认为在您的脚本中,需要从文件(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);
}