世家都领会,json_encode平常会把json中的汉字转义成unicode,可是那并不一定是我们想要的。有的时候候,大家须求获得汉字格局的json字符串,举个例子要求获得gbk编码的json字符串(只要把汉字格局的字符串转码就足以拿走了)。有何样好办法么?

复制代码 代码如下:

php官方听到了这么些要求,并提供了一种保证的缓和方案:JSON_UNESCAPED_UNICODE。那么些参数能够保证json_encode不再将汉字转为unicode。

<?php
echo json_encode(“中文”); //”\u4e2d\u6587″

犹如如此就减轻了?当大家开心的用那一个参数的时候,开掘并未怎么卵用。留意一看,那个参数独有5.4随后的php辅助。那更早期的php怎么办吧?

那就让大家那么些在天朝做开辟的同校, 卓殊发烧,
一时还只可以自个儿写json_encode.

社区提供了一种方案:

而在PHP5.4, 这些难题追根究底能够化解, Json新扩张了多个挑选:
JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

function my_json_encode($arr){
//convmap since x char codes so it takes all multibyte codes (above ASCII ). So such characters are being "hidden" from normal json_encoding
array_walk_recursive($arr, function (&$item, $key) { if (is_string($item)) $item = mb_encode_numericentity($item, array (x, xffff, , xffff), 'UTF-'); });
return mb_decode_numericentity(json_encode($arr), array (x, xffff, , xffff), 'UTF-');
}

看下边包车型大巴例证:

只是这种情势唯有5.3才支撑,因为5.2并不帮忙佚名函数。至于消除办法?把佚名函数定义一下就能够。

复制代码 代码如下:

ps:解决json_encode中文UNICODE转码主题材料

<?php
echo json_encode(“中文”, JSON_UNESCAPED_UNICODE); //”中文”

用PHP的json_encode来管理中文的时候, 普通话都会被编码, 产生不可读的,
类似”\u***”的格式,假使想汉字不开始展览转码,这里提供三种办法

如何, 是否让大家很欢畅的更改? 呵呵, 当然, Json在5.4还踏向了:
JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT,
JSON_UNESCAPED_SLASHES等选用, 倘若有乐趣, 大家可以参照他事他说加以考察:
json_encode

网站地图xml地图