问题
客户端采用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']), );
- 经过以上的步骤处理,可完美解决中文乱码问题
以前PHP+Mysql遇见过这个问题,貌似只需要建表的时候加上CHARSET=utf8即可,别的地方不用加
博主文笔很好啊,期待写出更好的文章,以后常来坐坐,学一下,(蘑菇街首页 http://www.zzee.cc/)
嗯,问题的关键在于json传递的字符串都是utf-8编码的,以前也遇到过类似的情况。
其他数据库的相关信息倒是无所谓,在用脚本输出的时候转码一下就OK了