Le quand i S'il vous plaît, aidez-moi à sortir ... p> p> json_encode () code> ne fonctionnera pas pour moi quand j'utilise ¥ äö. Pourquoi? Et comment puis-je le faire fonctionner? php code>: p> JavaScript code>: P > alerte () code> la réponse et la réponse contient ¥, ä ou ö, la réponse est = null Code> P>
8 Réponses :
Il est dit dans le json_encode () code> Documentation : P>
Cette fonction fonctionne uniquement avec les données codées UTF-8. P> blockQuote>
Vous devez le convertir en utf-8 avec iconv ou mbstring premier. p>
Comme Greg mentionné, je devais encoder Åäö à utf-8 code>. Mais je n'utilisais pas iconv ou mbstring. Quand i utf8_encode () code> Toutes les valeurs avant de mettre les valeurs au tableau code> Le problème a été résolu. P>
Je suis confronté à un problème similaire, où j'ai une matrice associative qui doit être codée. J'ai essayé array_walk_recursive () code> avec si (isstring ($ saisir)) {return utf_encode ($ entrée); } else {revenir $ entrée} code> pour le rappel mais qui ne semblait pas fonctionner. Des idées?
@Ticom ma solution ci-dessous trie ça.
Utilisation de la méthode standard lors de la lecture de MySQL:
$resultArray = array();
while($obj = MySQL_fetch_object($res)) {
foreach($obj as $key => $value) {
if (!is_null($value)) {
$obj->$key = utf8_encode($value);
}
}
$resultArray[] = $obj;
}
$result = json_encode($resultArray);
JSON définit des chaînes comme unicode! p>
Vous devez vous encoder ISO à UTF-8 P>
the $ données code> (dans mon cas) est un tableau avec des valeurs de texte comme $ données code> à utiliser avec json_encode code>.
Cette fonction lancera le type de données correct pour la sortie JSON et UTF8_encode les chaînes.
/* Change data-type from string to integar or float if required.
* If string detected then utf8_encode() it. */
function cast_data_types ($value) {
if (is_array($value)) {
$value = array_map('cast_data_types',$value);
return $value;
}
if (is_numeric($value)) {
if(strpos('.', $value)===false) return (float)$value;
return (int) $value;
}
return utf8_encode((string)$value);
}
json_encode (cast_data_types($data));
Travaillé dans mon cas. Merci.
Une ancienne question, mais je figureais cela ici au cas où quelqu'un doit enregistrer des données à l'aide de JSON_ENCODE, mais gardez les données intactes, intactes pour l'inspection ultérieure. P>
Vous pouvez encoder les données RAW en utilisant base64_encode code>, il fonctionnera avec json_encode code>. Plus tard après avoir exécuté json_decode code>, vous pouvez décoder la chaîne avec base64_decode code>, vous obtiendrez les données d'origine non modifiées. p>
AS de PHP 5.4.0: P>
Convertissez vos chaînes dans votre matrice dans alors utf-8 code> à l'aide de utf8_encode ($ str) code> fonction. p>
json_encode code> avec json_unescaped_unicode fort> option: p>
$ arr = json_encode ($ Array, json_unescaped_unicode); code> p>
Quelle sortie obtenez-vous? Quelle bibliothèque JSON utilisez-vous?
La sortie est
null code> s'il contient Å, Ä ou Ö. La bibliothèque JSON est JSON.ORG/JSON2.JSQuelle version PHP utilisez-vous? Je crois que les premières versions de
JSON_ENCODE () code> uniquement manipulées les chaînes UTF-8 correctement. Essayezutf8_encode code> -ing la chaîne avant de coder et de voir si cela fonctionne.La version PHP est 5.Quelque chose. Ont essayé
utf8_encode code> mais cela n'a pas fonctionné pour moi.En fait,
utf8_encode code> a fonctionné :) !!! Heureux à nouveau.@gunderwonder. Si vous souhaitez céder à votre réponse, faites-vous commenter une réponse ...