2010-07-15 7 views
0

lorsque je fais une entrée directe en tant que texte l'entrée passe bien, mais quand je change le type d'entrée "FILE", puis lire le contenu temporaire stocké sur le serveur, il ajoute des caractères supplémentaires sont « inconnus »caractères ajoutés lors de la lecture du fichier temporaire

$fileName = $_FILES['userfile']['name']; 
$tmpName = $_FILES['userfile']['tmp_name']; 
$fileSize = $_FILES['userfile']['size']; 
$fileType = $_FILES['userfile']['type']; 

$fp = fopen($tmpName, 'r'); 
$content = fread($fp, $fileSize); 
fclose($fp); 

echo $content; 

Son plus probablement à voir avec secuirty mais comment puis-je modifier le contenu de sorte qu'il lit normal? Dans Firefox, il arrive avec des boîtes carrées pour la plupart des caractères avec les lettres: Voici un exemple:

Son voulait dire: « Dirty Rocker » mais vient plutôt comme ça: « Dirt y R o c k e r "

J'espère que vous pouvez aider!

+0

Quel type de fichier téléchargez-vous dans cet exemple? Quel programme avez-vous utilisé pour l'éditer? –

+1

Ceci est clairement un problème d'encodage. Les données envoyées à Firefox sont probablement UTF-16, mais Firefox l'interprète comme un codage sur un octet (peut-être UTF-8). – Thomas

Répondre

1

Définissez le type de données sous la forme multipart/form-data. Définissez l'encodage de la page de sortie sur utf-8 via l'en-tête et la balise META.

Vérifiez le contenu réel du fichier téléchargé. Fichier original Compair et sa copie sur le serveur. Essayez de télécharger le fichier manuellement (par exemple ftp, par exemple) et lisez-le par php.

+0

J'ai trouvé le problème, pour qu'il soit affiché correctement dans le navigateur, j'ai besoin de sauvegarder le fichier au format UTF-8 au moment où il est enregistré sous UNICODE ... est-il possible de convertir le fichier en UTF-8 sans que l'utilisateur doive le faire lui-même? –

+0

mb_convert_encoding peut convertir des fichiers mais en utilisant le "AUTO" ne trouve pas le caractère spécifié tristement :( –

Questions connexes