Проблема Расшифровка Utf-8 nodejs - Недопустимый байт продолжения в readContinuationByte - PullRequest
0 голосов
/ 14 апреля 2020

Я разрабатываю сервер nodejs и хочу преобразовать файл CSV в файл json. Я успешно выполняю эту часть, но по моим данным (libelle_etape не в хорошем формате (utf8), значения выглядят так: 'EII / MEA 5ème annà © e' или 'Geau / STE 4ème annà © e 'et c ...). Так что в моей функции я хотел бы декодировать эти значения, чтобы иметь правильный формат в моем json файле.

У меня есть результат, который я хочу, когда я делаю:

 const result= utf8.decode(str)

НО проблема заключается в следующем: когда я хочу заменить старую строку, которая у меня есть в моем CSV-файле (эта: "EII / MEA 5à annme annà © e"), на хорошую (result = "EII / MEA 5ème année") У меня следующая ошибка:

* Ошибка необработанного отклонения: Недопустимый байт продолжения в readContinuationByte *

Весь код:

CSVToJSON()
  .fromFile('./infoEtu.csv')
  .then((source) => {
    const oneData = source[0];
    for (let i = 0; i < source.length; i++) {
      for (let j = 0; j < Object.keys(source[i]).length; j++) {
        const columnName = Object.keys(source[i]);
        columnName.forEach((element) => {
          if (element == 'Libelle_etape') {
            const str = source[i]['Libelle_etape'];
            const result = utf8.decode(str);
            console.log(result);     // this line show me the good result
            source[i]['Libelle_etape'] = String(result);  // this line is definitely the problem , i've tried with and withou de String() methods but it's the same error
          }
        });
      }
    }

    const data = JSON.stringify(source);
    FileSystem.writeFileSync('./jsonEtu.json', data);
});

Спасибо Заранее за вашу помощь, я давно ищу и могу найти такую ​​же проблему где угодно.

1 Ответ

0 голосов
/ 14 апреля 2020

ОБНОВЛЕНИЕ:

Проблема была из-за акцентов! Делая это, он работает:

const result = accents.remove(utf8.decode(str));
source[i]['Libelle_etape'] = result;
...