Как поменять локаль для csv файла

118
22 февраля 2022, 17:40

Суть в том, что нужно .csv файлом заполнить массив, чтоб загрузить его в базу, но для этого надо поставить локаль 1251. , а это в итоге приводит к тому, что у меня этот хаос

    setlocale(LC_ALL, 'rus_RUS.CP1251');
   if(isset($_POST["submit"]))
{
    if($_FILES['file']['name'])
    {
        $filename = explode(".", $_FILES['file']['name']);
        if($filename[1] == 'csv')
        {
            $handle = fopen($_FILES['file']['tmp_name'], "r");
             while($data = fgetcsv($handle))
            {
                $lines[] = $data;
            }
            echo '<pre>';
            print_r($lines);
            echo '</pre>';
        } 
}
}

Вот что в кодировке 1251

а вот utf-8

Answer 1

Добавьте в Ваш скрипт header

header('Content-type: text/html; charset=cp-1251');
Answer 2

либо конвертируйте то что прочитали из файла в utf8. setlocale которую вы используете к сырым данным никак не применимо.

print_r(iconv('windows-1251', 'UTF-8',$lines));
READ ALSO
Cформировать верный массив по вложениям

Cформировать верный массив по вложениям

Подскажите, как получить количество повторений из подмассива? Входные данные:

79
Laravel проблема с get

Laravel проблема с get

Вид listblade

83
Подскажите в переборе массива php

Подскажите в переборе массива php

Как перебрать массив следующего типа?

95
Как включить ЧПУ в компоненте news.list битрикс

Как включить ЧПУ в компоненте news.list битрикс

На сайте есть папка inform в ней 2 файла indexphp и detail

98