Как преобразовать текст UTF-8 в формат JSON

Я работал над проектом, который имел проблемы при кодировании текста UFT-8 в формате JSON

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

и я также попробовал Zend_JSON Library,

 <?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? Какие-либо предложения?

Это уникода, обозначаемая javascript / ecmascript. Пытаться

 <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 (стр. 14):

В строковых литералах, литералах регулярных выражений и идентификаторах любой символ (блок кода) также может быть выражен как escape-последовательность Unicode, состоящая из шести символов, а именно: \ u плюс четыре шестнадцатеричных цифры.

Что именно безумие в отношении выхода?

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

Этот код, кажется, успешно показывает عربي