PHP: создание файла CSV с кодировкой Windows - PullRequest
0 голосов
/ 26 октября 2011

Я создаю CSV-файлы с php.Чтобы записать данные в мой CSV-файл, я использую функцию php "fputcsv".

В этом проблема: я могу нормально открыть созданный файл в Excel.Но я не могу импортировать файл в систему магазинов (в данном случае "shopware").Он говорит что-то вроде «данные не могут быть прочитаны».

А теперь приходит подсказка:

Если я открою созданный файл и выберу «сохранить как» и выбрать «CSV (запятая с разделителями-запятыми»)) "по типу, этот файл может быть импортирован в магазин.Я прочитал кое-что о функции php "mb_convert_encoding", которую я использовал для кодирования данных, но она не смогла решить проблему.

Я буду очень рад, если вы сможете мне помочь.

спасибо.

Ответы [ 3 ]

0 голосов
/ 26 октября 2011

На это нельзя ответить, не зная больше о вашей системе. Скорее всего, это не имеет ничего общего с кодировкой символов. Возможно, это проблема неправильного количества столбцов или заголовков столбцов.

Если это проблема с кодировкой символов, лучше всего ставить:

$new_str = mb_convert_encoding($str, 'Windows-1252', 'auto');

Также заканчивайте переводы строк \ r \ n, а не просто \ n.

Если это не сработает, вам нужно проверить документы по программному обеспечению.

0 голосов
/ 27 октября 2011

Спасибо за ваш вклад. Я решил эту проблему, заменив fputcsv на fwrite. Затем мне просто нужно было добавить "\ r \ n" (спасибо wmil) в конец строки, и сгенерированный файл можно прочитать в магазине.

Очевидно, что функция fputcsv использует \ n, а не \ r \ n как символ EOL.

0 голосов
/ 26 октября 2011

Я думаю, что вы не можете установить кодирование с помощью fputcsv.Однако fputcsv обращается к настройке локали, которую вы можете изменить с помощью setlocale.

Возможно, вы могли бы отправить свой файл напрямую в браузер пользователей и использовать изменяемый тип контента и кодировку с функцией заголовка.

...