#csv #encode #fputcsv
#csv #кодировать #fputcsv
Вопрос:
я создаю csv-файлы с помощью php. Чтобы записать данные в мой csv-файл, я использую php-функцию «fputcsv».
в этом проблема: я могу нормально открыть созданный файл с помощью Excel. Но я не могу импортировать файл в shopsystem (в данном случае «shopware»). В нем говорится что-то вроде «данные не могут быть прочитаны».
И теперь приходит подсказка:
Если я открою созданный файл и выберу «сохранить как» и выберите «CSV (через запятую)» в поле тип, этот файл можно импортировать в shopware. Я кое-что прочитал о функции php «mb_convert_encoding», которую я использовал для кодирования данных, но это не смогло решить проблему.
Я буду очень рад, если вы сможете мне помочь.
Спасибо.
Ответ №1:
Спасибо за ваш вклад. Я решил эту проблему, заменив fputcsv на fwrite. Затем мне просто нужно было добавить » r n» (спасибо wmil) в конец строки, и сгенерированный файл может быть прочитан shopware.
Очевидно, что функция fputcsv использует n, а не rn в качестве символа EOL.
Ответ №2:
Я думаю, вы не можете установить encode с помощью fputcsv. Однако fputcsv обращается к настройкам локали, которые вы можете изменить с помощью setlocale.
Возможно, вы могли бы отправить свой файл непосредственно в браузер пользователя и использовать изменение contenttype и charset с функцией заголовка.
Комментарии:
1. я не устанавливаю тип кодирования с помощью fputcsv. я просто кодирую значения входного массива, который fputcsv принимает в качестве аргумента. файл предназначен не для загрузки, а для cronjob, который инициирует импорт в shopware.
Ответ №3:
На этот вопрос нельзя ответить, не зная больше о вашей системе. Скорее всего, это не имеет ничего общего с кодировкой символов. Вероятно, проблема в неправильном количестве столбцов или неправильных заголовках столбцов.
Если это проблема с кодировкой символов, лучше всего:
$new_str = mb_convert_encoding($str, 'Windows-1252', 'auto');
Также заканчивайте новые строки символом rn, а не просто n .
Если это не сработает, вам нужно будет проверить документацию по программному обеспечению.
Комментарии:
1. номера столбцов верны в каждой строке, я только что проверил. к сожалению, предложенная кодировка не решила проблему. я не имею никакого влияния на символ EOL, поскольку он записывается автоматически fputcsv. какие программные документы вы имеете в виду?