JSON formatında içine UTF-8 metin dönüştürmek için nasıl

2 Cevap php

Ben JSON Format içine DTM-8 metin kodlama zaman sorunu vardı bu proje üzerinde çalışıyordu

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

ve ben de Zend_JSON Kütüphane çalıştı,

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

Her iki durumda JSON çıkış deli oldu:

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

i PHP5.2.6 ve PHP5.3 ama aynı sonucu içine denemek o ..

Nasıl JSON içine UTF-8 metin dönüştürebilirim? Herhangi bir öneriniz?

2 Cevap

That's a unicode notation understood by javascript/ecmascript. Try

<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>

Kendiniz görmek için.

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

In string literals, regular expression literals, and identifiers, any character (code unit) may also be expressed as a Unicode escape sequence consisting of six characters, namely \u plus four hexadecimal digits.

Ne tam olarak çıkışı hakkında deli?

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

Bu kodu başarıyla göstermek gibi görünüyor عربي