我有一个CSV文件,里面有汉字。汉字是用Unicode编码的(例如香)。
如何在Google中打开或导入此CSV文件,并使汉字显示正确,我的意思是将汉字显示为实际的汉字(例如,香应显示为香)。

如果Google工作表不能在实际的汉字中解码和显示Unicode,那么Excel能做到吗?
下面是一个非常简单的例子,这样一个CSV文件内容,只有两行。
Product Title
香辣猪发布于 2022-03-22 05:49:34
用
function decode(code = '香'){
var char = String.fromCharCode(code.match(/&#(\d+);/)[1]);
console.log(char)
}
var code = '香'
var char = String.fromCharCode(code.match(/&#(\d+);/)[1]);
console.log(char)
从纸张解码的例子
如果您已经上传了数据,请使用此方法进行解码。
function decode(){
var sh=SpreadsheetApp.getActiveSheet()
var data=sh.getDataRange().getValues()
data.forEach((rng, row) => {
rng.forEach((r, col) => {
code = (ExtractAllRegex(r, '&#([0-9]+);', 1))
code.forEach(function (c) { r = r.replace(`&#${c};`, String.fromCharCode(c)) })
data[row][col] = r
})
});
sh.getDataRange().setValues(data)
}
function ExtractAllRegex(input, pattern,groupId) {
return Array.from(input.matchAll(new RegExp(pattern,'g')), x=>x[groupId]);
}从url解析csv的示例
function importCsvFromUrlCodeHtml(){
// enable service google sheets api
var url = 'http://xxxxxxxxxxxxxx.csv'
var data = UrlFetchApp.fetch(url).getContentText()
code = (ExtractAllRegex(data, '&#([0-9]+);', 1))
code.forEach(function (c) { data = data.replace(`&#${c};`, String.fromCharCode(c)) })
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
sh.clear();
SpreadsheetApp.flush();
var req = { pasteData: { data: data, delimiter: ",", coordinate: { sheetId: sh.getSheetId() } } };
Sheets.Spreadsheets.batchUpdate({requests: [req]}, ss.getId());
}
function ExtractAllRegex(input, pattern,groupId) {
return Array.from(input.matchAll(new RegExp(pattern,'g')), x=>x[groupId]);
}从驱动器解析csv的示例
function importCsvFromIdCodeHtml() {
var id = '13tlu9eYb5Ty3L45_RKibsfHjOXyUxeX3';
var csv = DriveApp.getFileById(id).getBlob().getDataAsString();
var csvData = Utilities.parseCsv(csv);
csvData.forEach((rng, row) => {
rng.forEach((r, col) => {
code = (ExtractAllRegex(r, '&#([0-9]+);', 1))
code.forEach(function (c) { r = r.replace(`&#${c};`, String.fromCharCode(c)) })
csvData[row][col] = r
})
});
var f = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
f.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
}
function ExtractAllRegex(input, pattern,groupId) {
return Array.from(input.matchAll(new RegExp(pattern,'g')), x=>x[groupId]);
}


https://stackoverflow.com/questions/71567141
复制相似问题