现在的位置: 首页 > 程序设计> 正文
Java PHP Json Mysql 中文乱码问题之解决
2012年06月01日 程序设计 评论数 3 ⁄ 被围观 5,773+

问题

客户端采用Java语言编写,服务器端采用PHP语言编写,数据库采用Mysql存储,客户端和服务器之间的交互采用Json,在传递英文数据的时候没有问题,当传递中文数据数据的时候,就会出现中文乱码问题,mysql里面的中文全部变成问号了。

解决方案

  • Mysql数据库,数据表,数据字段采用统一编码UTF-8, 如 utf8_general_ci
  • 客户端Java字符串转成json格式的时候先进行urlencode处理
    1
    2
    3
    
    JSONObject jo = new JSONObject();
    //jo.accumulate("note", note);
    jo.accumulate("note", URLEncoder.encode(note));
    JSONObject jo = new JSONObject();
    //jo.accumulate("note", note);
    jo.accumulate("note", URLEncoder.encode(note));
  • 服务器端PHP转换json格式后,插入数据库前先进行urldecode处理
    1
    2
    3
    4
    5
    
    $data = array(
        'meta_key' => 'note',
        //'meta_value' => $params['note'],
        'meta_value' => urldecode($params['note']),
    );
    $data = array(
        'meta_key' => 'note',
        //'meta_value' => $params['note'],
        'meta_value' => urldecode($params['note']),
    );
  • 经过以上的步骤处理,可完美解决中文乱码问题

目前有 3 条留言 其中:访客:3 条, 博主:0 条

  1. Adeploy : 2012年08月14日08:44:21  -49楼 @回复 回复

    以前PHP+Mysql遇见过这个问题,貌似只需要建表的时候加上CHARSET=utf8即可,别的地方不用加

  2. 蘑菇街首页 : 2012年06月02日18:04:02  -48楼 @回复 回复

    博主文笔很好啊,期待写出更好的文章,以后常来坐坐,学一下,(蘑菇街首页 http://www.zzee.cc/)

  3. bandit : 2012年06月01日13:15:46  -47楼 @回复 回复

    嗯,问题的关键在于json传递的字符串都是utf-8编码的,以前也遇到过类似的情况。
    其他数据库的相关信息倒是无所谓,在用脚本输出的时候转码一下就OK了

给我留言

留言无头像?


×
腾讯微博