2009-10-21 10 views
1

je travaillais sur le projet qui avait un problème lors de l'encodage du texte UFT-8 dans JSON FormatComment convertir UTF-8 texte en format JSON

<?php 
$result = array('wine'=>"测试", 'عربي'=>4, 'lemon'=>22); 
echo json_encode($result); 

et j'ai aussi essayé Zend_Json bibliothèque,

<?php 
require_once 'Zend/Json.php'; 
$result = array('wine'=>"测试", 'عربي'=>4, 'lemon'=>22); 
echo Zend_Json::encode($result); 

dans les deux cas, la sortie JSON était fou:

{"wine":"\u0639\u0631\u0628\u064a ","\u0639\u0631\u0628\u064a":4,"lemon":22} 

j'ai essayé dans PHP5.2.6 et PHP5.3, mais même résultat ..

Comment convertir du texte UTF-8 en JSON? Aucune suggestion?

+2

C'est JSON valide. Voir la grammaire sur http://json.org/ – Gumbo

Répondre

2

C'est une notation unicode compris par javascript/ECMAScript. Essayez

<html> 
    <head> 
    <title>unicode test</title> 
    <script type="text/javascript"> 
     function foo() { 
     var outDiv = document.getElementById("bar"); 
     var jsondata = {"wine":"\u0639\u0631\u0628\u064a ","\u0639\u0631\u0628\u064a":4,"lemon":22}; 
     for (var k in jsondata) { 
      outDiv.innerHTML += k + "=" + jsondata[k] + "<br />"; 
     } 
     } 
    </script> 
    </head> 
    <body onload="foo()"> 
    <div id="bar"></div> 
    </body> 
</html> 

voir par vous-même.

http://www.ecmascript.org/docs/tc39-2009-043.pdf (page 14):

Dans les chaînes littérales, littéraux d'expression régulière, et les identificateurs, tout caractère (unité de codage) peut également être exprimé comme une séquence d'échappement Unicode composé de six caractères, à savoir \ u plus quatre chiffres hexadécimaux.
+0

Merci VolkerK, Vous l'expliquez très bien! – tawfekov

1

Quel est exactement fou de la sortie?

var b = {"wine":"\u0639\u0631\u0628\u064a ", test:"\u0639\u0631\u0628\u064a","lemon":22}; 
alert (b.wine); 

Ce code semble montrer avec succès عربي

+0

Je ne savais pas que la notation unicode comprise par javascript/ecmascript comme cela je m'attendais à la même chaîne puisque je travaille habituellement avec elle en anglais. Merci! – tawfekov

Questions connexes