我目前正在尝试使用
从 json 填充 .csv 文件const createCsvWriter = require('csv-writer').createObjectCsvWriter;
我已经读过他们使用的默认编码是 utf-8,我的一些 JSON 中有特殊字符、表情符号或中文字母......这是一个示例
[ { username: 'jung.y00n',
name: '정 윤',
bio:
'ғʀᴇᴇʟᴀɴᴄᴇʀᴍᴏᴅᴇʟ\nᴄᴏɴᴛᴀᴄᴛ 📩 ᴅᴍ 사적/공구 연락 확인 못해요\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n🔜바이오리 슬림/브이 스틱 (10/14-16)',
pic_url: 'C:/Users/Administrator/Downloadsjung.y00n.jpg' } ]
[ { username: 'yujing.lai',
name: '勇闖美利堅的美少女 * Miss.Amber',
bio:
'📍San Francisco,California USA\n🎓Academy of Art University🇺🇸Master of Fine Arts\n🎓National Taiwan University of Art🇹🇼BFA\n✈️🇹🇼🇮🇹🇪🇺🇺🇸🇳🇴🇦🇹🇭🇷🇸🇮🇻🇦🇻🇳🇰🇷🇭🇰🇯🇵🇨🇳🇲🇴',
pic_url: 'C:/Users/Administrator/Downloadsyujing.lai.jpg' } ]
[ { username: 'rky_thitiworada',
name: 'ฐิติวรดา จังจริง',
bio:
'Thitiworada Janjring\n🎧DJ.Rky🎧\nI\'m interested in music,mixing,EDM,DJ \n ติดต่องาน ☎️ 097-0922200 \nติดต่องาน ID line➡️ djrky \n🖤#msrk 💞👫 @mashiimx',
pic_url: 'C:/Users/Administrator/Downloadsrky_thitiworada.jpg' } ]
[ { username: 'mimisayhihi',
name: '米恩綺Mimi',
bio:
'📍Taipei \n📩工作聯繫窗口\nKaren :karen@cclfilm.com \n方慈/judy@ cclfilm.com \n活動邀約/hihifish1128@gmail.com',
pic_url: 'C:/Users/Administrator/Downloadsmimisayhihi.jpg' } ]
但是将 JSON 导出为 csv 并在 Windows 中的 ms excel 中打开它后,它看起来像这样
知道我需要做什么才能正确编码和显示吗?
最佳答案
您可以在前面加上 Byte order mark到文件告诉 Excel 正确解码字符,这应该可以解决问题:
const users = [ { username: 'jung.y00n',
name: '정 윤',
bio:
'ғʀᴇᴇʟᴀɴᴄᴇʀᴍᴏᴅᴇʟ\nᴄᴏɴᴛᴀᴄᴛ 📩 ᴅᴍ 사적/공구 연락 확인 못해요\n⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀\n🔜바이오리 슬림/브이 스틱 (10/14-16)',
pic_url: 'C:/Users/Administrator/Downloadsjung.y00n.jpg' }
,
{ username: 'yujing.lai',
name: '勇闖美利堅的美少女 * Miss.Amber',
bio:
'📍San Francisco,California USA\n🎓Academy of Art University🇺🇸Master of Fine Arts\n🎓National Taiwan University of Art🇹🇼BFA\n✈️🇹🇼🇮🇹🇪🇺🇺🇸🇳🇴🇦🇹🇭🇷🇸🇮🇻🇦🇻🇳🇰🇷🇭🇰🇯🇵🇨🇳🇲🇴',
pic_url: 'C:/Users/Administrator/Downloadsyujing.lai.jpg' }
,
{ username: 'rky_thitiworada',
name: 'ฐิติวรดา จังจริง',
bio: 'Thitiworada Janjring\n🎧DJ.Rky🎧\nI\'m interested in music,mixing,EDM,DJ \n ติดต่องาน ☎️ 097-0922200 \nติดต่องาน ID line➡️ djrky \n🖤#msrk 💞👫 @mashiimx',
pic_url: 'C:/Users/Administrator/Downloadsrky_thitiworada.jpg' }
,
{ username: 'mimisayhihi',
name: '米恩綺Mimi',
bio:
'📍Taipei \n📩工作聯繫窗口\nKaren :karen@cclfilm.com \n方慈/judy@ cclfilm.com \n活動邀約/hihifish1128@gmail.com',
pic_url: 'C:/Users/Administrator/Downloadsmimisayhihi.jpg' }
];
const fs = require("fs");
const createCsvWriter = require('csv-writer').createObjectCsvWriter;
const outputFile = "users.csv";
const csvWriter = createCsvWriter({
path: outputFile,
header: Object.keys(users[0]).map(key => { return {id: key, title: key} })
});
function prependBOM(file) {
let fileContents = fs.readFileSync(file);
fs.writeFileSync(file, "\ufeff" + fileContents);
}
async function writeCSV() {
await csvWriter.writeRecords(users);
// Prepend BOM to file so Excel will display characters correctly.
prependBOM(outputFile);
}
writeCSV();
如果您不想执行此操作,可以将 UTF-8 数据手动导入 Excel:
- 启动 Excel。
- 使用“数据”->“导入外部数据”->“导入数据”导入 csv 数据
- 选择文件类型“csv”,浏览到您的文件并选择它。
- 在导入向导中将 File_Origin 更改为“65001 (UTF-8)”。
- 然后您可以点击“转换数据”来查看您的数据。
- 您可以选择关闭并加载,以使用导入的数据创建新工作表。
关于javascript - 将 JSON 中的特殊字符转换为 CSV 时的字符编码(excel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58300212/