PHP не может правильно проанализировать CSV (файл находится в UTF-16LE)Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 PHP не может правильно проанализировать CSV (файл находится в UTF-16LE)

Сообщение Anonymous »

Я пытаюсь проанализировать файл CSV с помощью php.

в файле используется запятые в качестве делимитера < /strong> и двойные кавычки для полей, содержащих запятую (ы) < /strong>, как: < /p>

Код: Выделить всё

foo,"bar, baz",foo2
< /code>

 Проблема < /strong> я сталкиваюсь с тем, что я получаю поля, содержащие запятую (ы). Я получаю: < /p>


[*]"2
[*]

Код: Выделить всё

rue du ..."< /code> < /li>
< /ul>

вместо: 2, rue du ... < /code>. < /p>



 кодирование: < /strong>

file не кажется в UTF8. В начале у него есть странные Wharacters (по-видимому, не Bom, выглядит так при преобразовании из ASCII в UTF8: ÿÞ < /code>) и не отображает акценты. MB_DETECT_ENCODING () < /CODE> В строках CSV он возвращает  ascii < /strong> < /li>
< /ul>

Но не преобразует: < /p>


mb_convert_encoding()
преобразует из ASCII , но возвращает азиатские символы из UTF-16LE Возвращает Уведомление: iConv (): неправильный Charset, преобразование из UTF-16LE /

Код: Выделить всё

ASCII< /code> utf8 < /code> не разрешено < /strong>. < /li>
< /ul>



 parsing: < /strong>

я пытался проанализировать с помощью этого One-liner (см. Эти 2 комментарии), используя str_getcsv () < /> < /prise < /prise (см.$csv = array_map('str_getcsv', file($file['tmp_name']));
< /code>

Я затем попробовал с fgetcsv () < /code>: < /p>

$f = fopen($file['tmp_name'], 'r');
while (($l = fgetcsv($f)) !== false) {
$arr[] = $l;
}
$f = fclose($f);
< /code>

В обоих случаях я получаю поле своего адреса в 2 частях. Но когда я пробую этот образец кода, я получаю правильно проанализированные поля: < /p>

$str = 'foo,"bar, baz",foo2,azerty,"ban, bal",doe';
$data = str_getcsv($str);
echo '' . print_r($data, true) . '';
< /code>



Подвести итог вопросами: < /p>


 Каковы символы в начале файла? < /li>
 Как я могу быть уверен в кодировании?  (Atom читает файл с UTF-16 LE 
и не отображает странные символы в начале)>

Подробнее здесь: https://stackoverflow.com/questions/525 ... n-utf-16le
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»