背景:
近期做微信卡券开发遇到一个问题,创建卡券post数据给服务器时返回data format error, do NOT use json unicode encode (\uxxxx\uxxxx), please use utf8 encoded text!
。这就奇怪了,代码中一直用的是UTF-8,怎么就跟unicode搭上关系了呢?一通搜索后发现,用PHP的json_encode
来处理中文的时候,中文都会被编码,变成不可读的, 类似\u***的格式,微信服务器端不能接受。
|
|
解决方法:
法一:
把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。
|
|
法二:
PHP 5.4中对json_encode对options可选参数增加JSON_UNESCAPED_UNICODE常量,即不编码为unicode
|
|