Перекодировать весь файл CSV перед анализом - используя простой PHP? - PullRequest
0 голосов
/ 07 апреля 2011

У меня есть скрипт, который читает содержимое удаленного файла CSV, выполняет итерацию по строкам и добавляет элементы данных в базу данных.Этот файл имеет в среднем около 3000 строк, и, следовательно, 3000 продуктов.

Чтобы прояснить несколько вещей:

  • У меня нет предварительного контроля над данными в файле CSV
  • У меня нет доступа / контроля над способом создания этого файла CSV
  • Файл CSV динамически генерируется один раз в день из данных в базе данных MySQL

Проблема:

Мой сценарий повторяет только около 1300 строк, затем останавливается, ошибок нет, ничего.Весь текст заключен в двойные кавычки, и, как правило, файл CSV выглядит правильно отформатированным.Странная вещь заключается в следующем: если я загружаю файл CSV, открываю его в Notepad ++ и меняю кодировку на UTF-8 БЕЗ спецификации, загружаю его на тестовый сервер и запускаю свой сценарий для файла THAT, я получаю ПОЛНЫЕ 3000 элементов и всевсе в порядке.

Итак, я предполагаю, что люди, генерирующие этот файл, должны вставить данные в формате UTF-8?Поскольку я не могу контролировать этот процесс, я хотел бы знать, существует ли довольно простой способ, которым я могу применить кодировку UTF-8 БЕЗ BOM к этому файлу, или, по крайней мере, прочитать содержимое файла в переменную и перекодировать это?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 07 апреля 2011

Вы можете использовать iconv, чтобы изменить кодировку непосредственно с php перед обработкой файла.

Редактировать: PHP-версия iconv может использоваться для обработки данных. Если вы хотите перекодировать файл перед импортом, вам нужно будет использовать команду linux iconv (при условии, что сервер LAMP), используя, например, exec .

0 голосов
/ 07 апреля 2011

звучит так, как будто вы пытаетесь сделать это непосредственно с другого сервера.почему вы не получаете весь файл и не сохраняете его на своем собственном сервере, не выполняете какие-либо манипуляции с ним и затем выполняете свою обработку?

...