2009-12-27 2 views
1

У меня есть файл csv, который я разбираю с PHP. (. На самом деле, это разделенная табуляция) в текстовом редакторе файл выглядит следующим образом:Неопознанные дополнительные символы в файле, обработанные php

Object Id Page/Master Id Page/Master Name ... 

Используя этот код:

$f = file_get_contents($filepath); 
echo $f; 

я получаю в браузере:

��O�b�j�e�c�t� �I�d� �P�a�g�e�/�M�a�s�t�e�r� �I�d� �P�a�g�e�/�M�a�s�t�e�r� �N�a�m�e� ... 

со всеми этими символами вопросительного знака. Если я использую strlen() для подсчета количества символов, он сообщает в два раза больше, чем нужно. Я подозреваю, что это имеет какое-то отношение к unicode, но я не уверен, как с этим справиться.

Любые идеи?

ответ

5

Возможно, я ошибаюсь, но это пахнет кодированным UTF-16 файлом. Можете ли вы попробовать

$f = iconv("utf-16", "utf-8", $f); 

?

+0

Интервал символов почти наверняка указывает, что это файл в формате Юникод. Утф-16 тоже очень вероятно. – Goyuix

+1

В частности, это кодировка UTF-16LE (little-endian), версия UTF-16 Windows вводит в заблуждение как «Unicode». Два байта в начале - это знак байтового байта, который позволит 'utf-16'-with-unspecified-endianness работать, автоматически обнаруживая малозначность. – bobince