日期:2014-05-16  浏览次数:20519 次

使用zend的json库编码php数组(汉字保持)
目标:希望中文的键和值不要转成utf16码,仍然保持原样。

方法:
先加载zend的库,然后hack一下,把文件Zend/Json/Encode.php修改一下
263行和264行将其注释掉即可。
$string = str_replace(array(chr(0x08), chr(0x0C)), array('\b', '\f'), $string);
$string = self::encodeUnicodeString($string);


就是这两句把汉字转成了utf16的码。

在正式代码中使用时,
Zend_Json::$useBuiltinEncoderDecoder = true;
$arr = array('你好键1'=> '你好值1', '你好键2'=> '你好值2');
echo Zend_Json::encode($arr);


最终会显示
{"你好键1":"你好值1","你好键2":"你好值2"}