Как узнать, почему не работает json_encode (PHP)? - PullRequest
0 голосов
/ 13 июля 2020

У меня огромный csv со списком имен и дат. Мне нужно поместить подмножество из них в структуру PHP для данного месяца. Итак, я просматриваю CSV и фильтрую те строки, где месяцы - это то, что я хотел, отправить имена в список, а затем сохранить этот список в файл с помощью json_encode.

Я делаю это один раз в месяц, в общей сложности 12 раз, поскольку мне нужен только один год.

Я прошел месяцы с 1 по 7 без проблем. Сейчас 8 месяц проваливается. Список создается, но ничего не сохраняется из-за сбоя json_encode.

Вызов json_last_error_msg () выдает сообщение «Неверные символы UTF-8».

Я прочитал CSV, выполнив

  if (($handle = fopen($in_csv, "r")) !== FALSE) {
       while (($data = fgetcsv($handle, 0, ",")) !== FALSE) {           
           $line++;
           
           $data = array_map("utf8_encode", $data);  // <- This was added after the first failure. But I have tried without it

           // ... do stuff with data and save the name and last name to a struct. 
           
       }       
       fclose($handle);
   }

   // At the end I do
   $fid = fopen("filename","w");
   fwrite($fid,json_encode($output));
   echo "JSON ENCODE RESULT: " . json_last_error_msg() . "\n";
   fclose($fid);

Мне это действительно нужно для работы. Есть ли ЛЮБОЙ способ, которым JSON может сказать мне, что ему не нравится, чтобы я мог удалить или исправить это?

1 Ответ

0 голосов
/ 13 июля 2020

Эта ошибка обычно возникает из-за неправильной кодировки данных в данном случае (кодировка UTF-8). Проверьте весь синтаксис в данных, особенно проверьте наличие запятых ,, поскольку у вас есть файл CSV.

Согласно PHP Руководство json_last_error_msg() вызывает этот тип ошибки.

JSON_ERROR_UTF8: Неправильные символы UTF-8, возможно, неправильно закодированные

Если у вас есть проблема с поиском ошибки вручную в большом CSV-файле, вы можете использовать одну из этих библиотек.

https://www.npmjs.com/package/csv-validator

https://www.npmjs.com/package/csv-file-validator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...