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?
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
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