Je rencontre des problèmes d'encodage bizarres lorsque je manipule des fichiers téléchargés.Fichiers non-UTF8 (fichier Google CSV)
Je dois accepter n'importe quel type de fichier texte, et être capable de lire le contenu. Plus précisément, vous rencontrez des problèmes avec les fichiers téléchargés à partir d'une exportation Google Contacts.
J'ai fait l'habituel utf8_encode/decode, mb_detect_encoding, etc. Toujours retourne comme si la chaîne est UTF-8, et essayé de nombreuses options iconv pour essayer de revenir à l'encodage, mais échoué.
test.php
header('Content-type: text/html; charset=UTF-8');
if ($stream = fopen($_FILES['list']['tmp_name'], 'r'))
{
$string = stream_get_contents($stream);
fclose($stream);
}
echo substr($string, 0, 50);
var_dump(substr($string, 0, 50));
echo base64_encode(serialize(substr($string, 0, 50)));
Sortie
��N�a�m�e�,�G�i�v�e�n� �N�a�m�e�,�A�d�d�i�t�i�o�n�
��N�a�m�e�,�G�i�v�e�n� �N�a�m�e�,�A�d�d�i�t�i�o�n�
czo1MDoi//5OAGEAbQBlACwARwBpAHYAZQBuACAATgBhAG0AZQAsAEEAZABkAGkAdABpAG8AbgAiOw==
Les erreurs de codage sont trop vagues. Nous avons besoin d'un exemple. Essayez d'écrire un 'base64_encode (serialize ($ excerpt))' ici. – mario
Mis à jour avec des exemples d'extraits. – James
D'où vient la chaîne $? Pouvez-vous montrer le code que vous utilisez pour l'obtenir? Quel encodage produisez-vous dans ceci? –