json_encode中文unicode的问题
2016-01-22 15:12
211 查看
近期做微信卡券开发遇到一个问题,创建卡券post数据给服务器时返回data format error, do NOT use json unicode encode (/uxxxx/uxxxx), please use utf8 encoded text!。这就奇怪了,代码中一直用的是UTF-8,怎么就跟unicode搭上关系了呢。一通搜索后发现,用PHP的json_encode来处理中文的时候,中文都会被编码,变成不可读的, 类似”/u***”的格式,微信服务器端不能接受。
解决方法如下:
$a = array('str1' => '中文', 'str2' => 'english');var_dump(json_encode($a));//string(40) "{"str1":"/u4e2d/u6587","str2":"english"}"
解决方法如下:
法一:
把汉字先urlencode然后再使用json_encode,json_encode之后再次使用urldecode来解码,这样编码出来的json数组中的汉字就不会出现unicode编码了。$a = array('str1' => urlencode('中文'), 'str2' => 'english'); var_dump(urldecode(json_encode($a))); //string(34) "{"str1":"中文","str2":"english"}"
法二:
PHP 5.4中对json_encode对options可选参数增加JSON_UNESCAPED_UNICODE常量,即不编码为unicode$a = array('str1' => '中文', 'str2' => 'english'); var_dump(json_encode($a, JSON_UNESCAPED_UNICODE));//string(34) "{"str1":"中文","str2":"english"}"
相关文章推荐
- 浅谈 Unserscore.js 中 _.throttle 和 _.debounce 的差异
- 后缀数组 1031: [JSOI2007]字符加密Cipher
- js获取单选button的值
- 简单的js字符串加密
- JS中实现字符串和数组的相互转化
- 在JS方法中返回多个值的方法
- JS打开选择本地文件的对话框
- javascript 传递参数中带加号自动变成了空格的解决方法
- .NET手记-JS获取Url参数
- HTML+js+css实现点击图片弹出上传文件窗口的两种思路
- js之执行环境(作用域)与作用域链深入剖析3
- js之执行环境(作用域)与作用域链深入剖析2
- js之执行环境(作用域)与作用域链深入剖析
- JavaScript正则表达式
- 公历和农历转换的JS代码
- JS2
- js1
- 8款JS框架比较
- JS框架整理
- JS 刷新页面