2009-12-27 4 views
1

J'ai un fichier csv que je suis en train d'analyser avec PHP. (. En fait, il est séparé par des tabulations) Dans un éditeur de texte, le fichier ressemble à ceci:Caractères supplémentaires non reconnus dans le fichier analysé avec php

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

En utilisant ce code:

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

Je reçois dans le navigateur:

��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� ... 

avec tous ces caractères de point d'interrogation. Si j'utilise strlen() pour compter le nombre de caractères, il en signale deux fois plus qu'il ne le devrait. Je soupçonne que cela a quelque chose à voir avec unicode, mais je ne sais pas comment le gérer.

Des idées?

Répondre

5

Je peux me tromper, mais cela ressemble à un fichier encodé en UTF-16. Pouvez-vous essayer

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

?

+0

L'espacement des caractères indique presque certainement qu'il s'agit d'un fichier Unicode. utf-16 est une hypothèse très probable aussi. – Goyuix

+1

En particulier, il s'agit du codage UTF-16LE (little-endian), la variante UTF-16 de Windows décrit de manière trompeuse comme étant simplement "Unicode". Les deux octets au début sont une marque d'ordre d'octets qui permettra à 'utf-16'-with-unspecified-endianness de fonctionner en détectant automatiquement la little-endianness. – bobince

Questions connexes