阿哥论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 629|回复: 0

PHP的json_encode中文被转码的问题

[复制链接]

2018

主题

1

好友

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

优秀会员 助人为乐 辛勤工作 技术精英 多才多艺 优秀班竹 灌水天才 星球管理 宣传大使 灌水之王 财富勋章 版主勋章 动漫勋章 勤奋会员 论坛精英 PS高手 心 8 闪游皮肤 双鱼座 8★8➹ 志愿者 乖

发表于 2015-4-26 11:41:26 |显示全部楼层
PHP的json_encode中文被转码的问题
在php5.2中做json_encode的时候。中文会被unicode编码,
php5.3加入了options参数,
5.4以后才加入JSON_UNESCAPED_UNICODE,这个参数,不需要做escape和unicode处理。
所以在5.4之前都需要对中文做个处理
5.4里面的处理
  1. json_encode($str, JSON_UNESCAPED_UNICODE);
复制代码
5.4之前,有两种方法处理
方法1.
  1. function encode_json($str){
  2.         $code = json_encode($str);
  3.         return preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
  4. }
复制代码
方法1.在实际应用中有个问题,部分字符会掉,不止为何,如字符串:"日期11.2"会被变成"日期.2"

方法2.
先对需要处理的做urlencode处理,然后json_encode,最后做urldecode处理
  1. function encode_json($str) {
  2.         return urldecode(json_encode(url_encode($str)));       
  3. }

  4. /**
  5. *
  6. */
  7. function url_encode($str) {
  8.         if(is_array($str)) {
  9.                 foreach($str as $key=>$value) {
  10.                         $str[urlencode($key)] = url_encode($value);
  11.                 }
  12.         } else {
  13.                 $str = urlencode($str);
  14.         }
  15.        
  16.         return $str;
  17. }
复制代码
PHP的json_encode中文被转码的问题
http://scnjl.iteye.com/blog/1724447

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

回顶部