json中文字符的坑

在php中对中文字符进行encode后会变成”\uxxxx”,字符长度从1个变成6个,增大了数据传输量;又如果你使用mysql存储encode后的数据,mysql varchar等字段是以字符为单位计算长度的,存储json数据时如果是”\uxxxx”形式hide话实际容量会大幅降低。

解决办法:
可以通过JSON_ESCAPE_UNICODE选项,表示不对unicode编码,

1
2
3
4
5
6
<?php
echo json_encode("中文");
//"\u4e2d\u6587"
echo json_encode("中文", JSON_UNESCAPED_UNICODE);
//"中文"