За последние 24 часа нас посетили 22240 программистов и 1058 роботов. Сейчас ищут 608 программистов ...

Кодировка при работе с csv файлами

Тема в разделе "Прочие вопросы по PHP", создана пользователем AlNick, 18 сен 2021.

  1. AlNick

    AlNick Активный пользователь

    С нами с:
    19 авг 2017
    Сообщения:
    64
    Симпатии:
    3
    Есть сайт, работающий в кодировке utf8. PHP скрипты имеют соответствующий заголовок. Скрипт читает файл csv, сделаный в экселе.
    PHP:
    1. $inf = fopen('item.csv', 'r');
    2. while ($item = fgetcsv($inf))
    3.     {
    4.     print_r($item);
    5.     }
    Но русский шрифт не отображается. Можно убрать заголовок с кодировкой, тогда всё нормально. Но мне нужна именно utf8.
    С созданием csv файла ещё сложнее. У меня вообще не получилось записать русский текст. Создаю так:
    PHP:
    1. $item = array (
    2.     array ("Текст", "9000"),
    3.     array ("Файл", "18000")
    4.     );
    5.  
    6. $inf = fopen('inf.csv', 'w');
    7. foreach ($item as $fields)
    8.     {
    9.     fputcsv($inf, $fields, ";");
    10.     }
    Подскажите, можно ли как-то перекодировать данные, полученные из файла? И как правильно создавать файл с русским текстом?
     
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    https://www.php.net/manual/ru/function.iconv.php
    Если вы получаете текст из формы, то кодировка этого текста зависит от установленного на странице с формой заголовка или его отсутствия, тогда браузер закодирует текст в кодировку по умолчанию.
    А если вы записываете текст из сценария, то его кодировка зависит кодировки этого самого сценария
    Это говорит о том, что текст в однобайтной кодировке.
    Видимо WINDOWS-1251
     
    #2 Drunkenmunky, 19 сен 2021
    Последнее редактирование: 19 сен 2021
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.751
    Симпатии:
    1.322
    Адрес:
    Лень
    открой notepad++
    засунь свой файл csv и преобразуй его в utf8