2014-06-06 4 views
0

Ceci est mon fichier PHP (le fichier réel est plus complexe, mais je trouve qu'il échoue même avec le code le plus simple):JSON non valide de json_encode()

<?php 
$salida = array(1,2,3,4,5); 
echo json_encode($salida); 
?> 

Ceci est la réponse que je reçois:

[1,2,3,4,5] 

Semble être valide, mais ce n'est pas le cas. Mon application AJAX indique 'Unexpected token' lorsque je la passe à la fonction jQuery.parseJSON(). Lorsque je le colle à la page Web JSONLint, renvoyer la même erreur.

Je remarque que si je supprime le premier caractère et le saisis à nouveau, le JSON devient valide.

Cela m'a fait penser et j'ai vérifié la chaîne JSON avec un éditeur HEX et je trouve des personnages étranges au début du fichier:

[1,2,3,4,5] 

C'est étrange parce que la fonction a bien fonctionné jusqu'à il y a quelques jours et le fichier n'a pas été modifié.

La balise <?php> se trouve au début du fichier et est encodée en utf-8.

Je travaille avec XAMPP 1.8.3 sous Windows 8.1. J'ai réinstallé XAMPP juste au cas où quelque chose est cassé, mais la fonction json_enconde() ne fonctionne toujours pas.

Quelqu'un sait comment résoudre ce problème?

Merci

Répondre

2

Vous devez enregistrer le fichier PHP (et tous les fichiers qu'il est compris) sans UTF8 BOM (byte marqueur d'ordre). Comment faire cela dépend de votre éditeur. Notez que l'utilisation de UTF8 lui-même est parfaitement bien et encouragé. Juste sans la nomenclature.

+0

En fait mon fichier est encodé en UTF-8 sans nomenclature mais j'ai remarqué que l'un des fichiers dépendants appelé avec require_once() était codé en UTF8 avec BOM. – Davalom

Questions connexes