PHP читать UTF-8 CSV

У меня есть сценарий PHP, который читает из файла CSV, файл в формате UTF-8 и код ниже обрабатывает его как ASCII. Как я могу изменить код для чтения файла как UTF-8?

if (($handle = fopen("books.csv", "r")) === FALSE)
throw new Exception("Couldn't open books.csv");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
[РЕДАКТИРОВАТЬ] Одна из проблем моего текущего кода заключается в том, что первое значение в первой строке всегда имеет три байта, которые идентифицируют файлы UTF-8, добавленные в начале. Итак, я думаю, что решение, которое работает со значением по значению или строка за строкой, может быть недостаточно хорошим?

3

Решение

Используйте fgets (), чтобы получить всю строку в переменной $ date, затем mb_convert_encoding () преобразовать кодировку, затем str_getcsv () преобразовать строку в массив.

if (($handle = fopen("books.csv", "r")) === FALSE)
throw new Exception("Couldn't open books.csv");

$data = "";

// get file all strin in data
while (!feof($handle)) {
$data .= fgets($handle, 5000);
}

// convert encoding
$data = mb_convert_encoding($data, "UTF-8", "auto");

// str_getcsv
$array = str_getcsv($data);
0

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

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

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