代码之家  ›  专栏  ›  技术社区  ›  tawfekov

如何将UTF-8文本转换为JSON格式

  •  1
  • tawfekov  · 技术社区  · 16 年前

    我当时正在进行一个项目,该项目在将UFT-8文本编码为JSON格式时遇到了问题

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

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

    在这两种情况下,JSON输出都是疯狂的:

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

    我确实在PHP5.2.6和PHP5.3中进行了尝试,但结果相同。。

    如何将UTF-8文本转换为JSON?有什么建议吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   VolkerK    16 年前

    这是javascript/ecmascript可以理解的unicode符号。 尝试

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

    亲自去看看。

    http://www.ecmascript.org/docs/tc39-2009-043.pdf

    在字符串文字、正则表达式文字和标识符中,任何字符(代码单元)也可以表示为由六个字符组成的Unicode转义序列,即\u加四个十六进制数字。
        2
  •  1
  •   Clyde    16 年前

    到底什么是疯狂的输出?

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

    推荐文章