кодировка символов при преобразовании специальных символов в JSON в CSV (Excel) - PullRequest
0 голосов
/ 09 октября 2019

В настоящее время я пытаюсь заполнить файл .csv из json, используя

const createCsvWriter = require('csv-writer').createObjectCsvWriter;

Я прочитал кодировку по умолчанию, которую они используют, utf-8, некоторые из моих JSON имеют специальные символы, emoji,или китайские буквы в нем .. вот пример

[ { 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 и открытия его в MS Excel в Windows это выглядело так:

enter image description here

Есть идеи, что мне нужно сделать, чтобы кодировался и показывался правильно?

1 Ответ

1 голос
/ 09 октября 2019

Вы можете добавить метку порядка байтов к файлу, чтобы сказать 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();

Если вы не делаетеt Если вы хотите сделать это, вы можете импортировать данные UTF-8 вручную в Excel:

  • Запустить Excel.
  • Импортировать данные CSV, используя Данные-> Импорт внешних данных-> Импорт данных
  • Выберите тип файла "csv", найдите файл и выберите его.
  • В мастере импорта измените File_Origin на "65001 (UTF-8)".
  • Затем вы можете нажать «Преобразовать данные», чтобы увидеть ваши данные.
  • Вы можете выбрать «Закрыть» и загрузить, чтобы создать новый лист с вашими импортированными данными.
...