2009-07-17 5 views
0

Ceci est fondamentalement tout ce que je faisPHP - caractères incongrus en cas d'erreur invalidant des rapports

echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s); 

Mais quand je supprimer le fichier ti.php de ce serveur pour tester si elle cache l'erreur que je reçois dans mon navigateur où l'erreur serait:

 

Qu'est-ce que c'est que ça (lol)? Je ne l'ai jamais vu avant et ne peux pas penser à une explication de pourquoi il apparaîtrait, des idées?

+1

Cela peut-il être quelque chose que votre serveur renvoie? Que se passe-t-il si vous appelez file_get_contents() sur un domaine différent (avec un serveur web différent), produit-il un résultat similaire? – inkedmn

Répondre

10

http://en.wikipedia.org/wiki/Byte-order_mark

Il est la nomenclature d'un document vierge UTF-8 traité comme un iso-8859-1. File_get_contents génère une erreur, qui n'est pas affichée, il s'agit donc essentiellement d'un document UTF-8 vierge.

Sans aucune information de jeu de caractères, le navigateur l'affiche en tant que document iso-8859-1 car il doit être le paramètre par défaut. Ainsi, la nomenclature apparaît comme ces caractères étranges.

EDIT:

En effet, j'ai copié les trois caractères de votre question, les collée dans un document, ont examiné les codes hexadécimaux: EF BB BF, qui est la nomenclature de UTF-8.

1

Pour coller à la réponse de FWH, assurez-vous de sortir le contenu vers le navigateur avec le codage approprié dans l'en-tête de type de contenu.

manière la plus simple de le faire est juste pour définir le jeu de caractères par défaut

ini_set('default_charset', 'UTF-8'); 
echo @file_get_contents("http://******.org/ti.php?i=".$i."&s=".$s); 

Mais vous pouvez utiliser un en-tête explicite() appeler si vous préférez.

Questions connexes