1. 首页>
  2. 腾讯云代理

[官方教程] 云数据库中,中文数据显示乱码

腾讯云 2017年05月03日 浏览500

腾讯云代理 腾讯云直播申请 游戏上云

摘要:

mysql数据库有默认有两大类字符集:
1. 服务器端字符集  对应查看命令: show global variables like '%chara%'; 
2. 客户端端字符集  对应查看命令: show variables like '%chara%'; 或者  show session variables like '%chara%';

在云数据库管理中心设置默认字符集,只是修改服务器端字符集,例如下图,就是将服务器端字符集修改为utf8.
QQ截图20150311115340.jpg 


此时在云服务器上连接云数据库,查看当前 服务器端字符集 和 客户端字符集 分别是什么,如下图
01.jpg 

发现服务器端的字符集已经全部变成了utf8,而客户端字符集中,“character_set_client”、“character_set_connection”、“character_set_results”的值还是latin1  
而客户端和服务端数据交换的数据流,如下:
向数据库中插入:client→connection→server
从数据库中查询:server→connection→results

以从数据库中查询为例,server里utf8的数据,传入connection转为latin1,再传入results转为latin1,utf8页面又把results转过来。而latin1和utf8两种字符集并不兼容,这样在客户端显示的查询结果中如果有中文就会显示乱码。
这就是为什么数据库中的数据明明是utf8字符集,在客户端中显示却是乱码的原因。

解决方案:

1、程序连接需要指定字符集
以java代码为例:
jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=UTF-8 
很多用户反应指定了字符集但是没有生效,这里的代码以我们提供的为准。
很多在上面代码上改成true&;characterEncoding就会导致字符集没有生效

2、mysql客户端连接数据库,方法有两种:
   a、mysql登录的时候指定字符集,即加上--default-character-set=utf8
   b、mysql登录后直接执行 set names utf8.即可



本文来自腾讯云论坛:http://bbs.qcloud.com/forum.php



腾讯云服务商邀请关注:

http://partners.qcloud.com/invitation/99377079157835da208bd0

关注服务商的链接,提供下您关注的QQ,我们这边审核下即可快速回复您的工单问题与技术支持! 感谢您的信任与支持!

auto_1452.png

腾讯云技术交流群


ps:本站信息来源于 bbs.qcloud.com

相关文章

在线客服
淘宝购买
腾讯云直播申请 title=
+成为腾讯云VIP客户 腾讯云直播申请 客服电话

15818558013

0755-33940501-803

0755-33940501-808