2010-03-19 10 views
3

J'essaye de renvoyer le contenu de json lu du serveur de MySQL. Ceci est censé être facile mais, il y a un caractère «bizarre» qui continue à apparaître au début du contenu.Caractère étrange au début du type de contenu json

J'ai deux pages pour le contenu de retour:

  1. kcb433.sytes.net/as/test.php?json=true&limit=6&input=d

    ce test.php est d'un script écrit par Timothy Groves, qui convertit un tableau en JSON

  2. http://kcb433.sytes.net/k.php?k=4

    celui-ci est supposé faire la même chose

J'ai essayé de le valider ici jsonformatter.curiousconcept.com mais juste la page 1 est validée, la page 2 indique qu'elle ne contient pas de données JSON.

Si vous accédez directement aux deux pages, cela ne pose aucun problème. Alors quelle est la différence, pourquoi les deux ne sont pas validés?

Puis j'ai trouvé cette page jsonformat.com et j'ai essayé la même chose. La page 1 était correcte et la page 2 ne l'était pas mais, étonnamment, les données pouvaient être lues. En un coup d'œil,

{"a":"b"} 

peut sembler bon mais il y a un caractère devant.

Selon un éditeur hexadécimal en ligne, c'est la valeur de la chaîne ci-dessus (au lieu de 9 valeurs, il y a 10):

-- 7B 22 61 22 3A 22 62 22 7D 

Le code pour faire écho JSON en page 2 est:

header("Content-Type: application/json"); 
echo "{\"a\":\"b\"}"; 

Répondre

5

Votre fichier k.php a BOM signature au début, enregistrer de nouveau k.php avec UTF8 sans nomenclature.

+0

J'étais en train de taper ceci, juste trop lent! Je voudrais ajouter: la nomenclature est facilement visible avec Fiddler, qui a une visionneuse hexagonale intégrée. –

+0

Je l'ai fait, mais ne semble pas fonctionner. – Nek

+2

Quel éditeur utilisez-vous pour éditer le fichier php? J'ai remarqué que Notepad n'a pas d'option pour 'UTF-8 sans BOM'. Dans Notepad ++, vous pouvez facilement choisir l'encodage 'UTF-8 sans BOM'. – YOU