欢迎您来到腾讯云!积分商城

腾讯云腾讯云论坛

 找回密码
 立即注册
快捷导航
搜索
查看: 7063|回复: 3

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

[复制链接]

64

主题

2

好友

302

积分

腾讯云专家团

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

云币
945
威望
302
发表于 2015-3-11 12:26:32 |显示全部楼层 |未分类
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

如果您觉得该主题对您有帮助,请给予我们支持与鼓励哦~~
点击屏幕右侧进行反馈
附加3.png
附加2.png

3

主题

0

好友

735

积分

程序猿[LV2]

Rank: 2Rank: 2

云币
2771
威望
735
发表于 2015-3-11 22:52:19 |显示全部楼层
学习了。。。。。。。。。。。。。。。
回复

使用道具 举报

0

主题

0

好友

16

积分

小白[LV1]

Rank: 1

云币
11
威望
1
发表于 2015-7-18 15:59:15 |显示全部楼层
真的很实用,感谢了~~~
回复

使用道具 举报

0

主题

0

好友

1028

积分

程序猿[LV2]

Rank: 2Rank: 2

云币
3667
威望
1028
发表于 2015-11-19 12:15:47 |显示全部楼层
好帖一定要顶!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

联系我们|腾讯云平台|积分商城|腾讯云官方论坛    

GMT+8, 2019-8-19 02:11 , Processed in 1.152386 second(s), 35 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部