Я вижу китайские буквы после преобразования UTF-16 в UTF-8

У меня есть файл .CSV в кодировке UTF-16. Разделитель полей — это запятая (,), а разделитель строк — двойные кавычки («). Изменение кодировки вне PHP не вариант. Мне нужно превратить его в ассоциативный массив с PHP. Но я не могу получить это признать, что кодировка UTF-16.

Вот мое содержимое файла для numbers.csv:

"Phone number""+1 55500718""+1 55551919"

Я успешно загрузил файл, как это (используя фреймворк Laravel)

$file = $request->file('numbers-file');
$filename = $file->getPathName();

У меня также есть пользовательская функция csvToAssocArray (), которая превращает ее в ассоциативный массив. Я использую mb_convert_encoding для преобразования UTF-16 в UTF-8.

function csvToAssocArray($filename) {
$csvAsArray = array_map(function($data) {
return str_getcsv(mb_convert_encoding($data, 'UTF-8', 'UTF-16'), ",");
}, file($filename));

$header = array_shift($csvAsArray);

$csv = array();

foreach ($csvAsArray as $row) {
$csv[] = array_combine($header, $row);
}

return $csv;
}

Но конечный результат print_r (csvToAssocArray ($ имя_файла)) выглядит так:

array:3 [▼
0 => array:1 [▼
"∀倀栀漀渀攀 渀甀洀戀攀爀∀" => "+1 55500718"]
1 => array:1 [▼
"∀倀栀漀渀攀 渀甀洀戀攀爀∀" => "+1 55551919"]
]

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]