问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql中字符集和校对怎么设置?

发布网友 发布时间:2022-04-07 21:30

我来回答

4个回答

懂视网 时间:2022-04-08 01:51

2.以表声明为utf-8为例,最终存储在表中的数据为utf-8

技术分享

  ①我们要告诉服务器,我给你发送的数据是什么编码?character_set_client

  ②告诉字符集转换器,转换成什么编码?character_set_connection

  ③查询的结果用什么编码?character_set_results

  如果以上三者都为字符集N,可简写为set names N;

 3.什么情况下会出现乱码呢?

我们首先创建一个测试表指定表的字符集为utf8

create table temp(

  name varchar(10)

) charset utf8;

然后执行这三条命令:

set character_set_client=gbk;

set character_set_connection=gbk;

set_character_set_results=gbk; 这三句可以简写为set names gbk;

最后往表里插入一条数据:

insert into temp values(‘中国‘);

select * from temp;这时候显示的结果是正常的。

当我们再执行这句命令时:set character_results=utf8;

出现乱码了,如图:

技术分享

由此可得出当返回的结果result的字符集与客户端的字符集不符的时候会出现乱码。

还有一种情况也会出现乱码:client声明与事实不符时,你客户端明明是utf8,你却非要叫我转成gbk的,如下图:

技术分享

可能还有很多种情况,这里没有一一列举。

4.什么情况下会造成数据的丢失呢?

执行这三条语句:

set character_set_client=gbk;

set character_set_connection=latin1;

set character_set_results=gbk;

再往表里插入一条数据:insert into temp values(‘美国‘);

最后查询的时候结果如下图:

 

技术分享

数据丢失了。

由此可得出当connection和服务器的字符集比client小时,会造成数据的丢失,可能用语不是很准确,但是能理解即可以了。个人理解,就跟java里面不同数据类型相互转换时一样,比如把double类型强制转换成int类型,就会造成精度的丢失一样。

。。。。。。 

   

二、校对集

什么是校对集?

校对集:指字符集的排序规则。

查看所有校对集语句:show collation;

一种字符集可以有一个或多个排序规则。

以utf8为例,默认是使用utf8_general_ci校对集,也可以按二进制来排,utf8_bin

怎样声明校对集?

create table tableName

(

  ...

)charset utf8 collate utf8_general_ci;

注意:声明的校对集必须是字符集合法的校对集。比如你字符集是utf8,你不能声明gbk的校对集。



三、校对规则的“可压缩性”

在绝大多数查询中,mysql使用哪种校对规则进行比较是很显然的。例如,在下列情况中,校对规则明显的是“列x的列校对规则”:


1 2 3 select x from T orderby x; select x from T wherex = x; select distinct x fromT;

但是,当涉及多个操作数时,可能不明确。例如:


1 select x from T wherex = ‘Y‘;

这个查询应该使用列x的校对规则,还是字符串文字‘Y‘的校对规则?

标准化SQL使用“可压缩性”规则解决这种问题。基本上,这个意思是:既然x和‘Y‘都有 校对规 则,哪个校对规则优先?这可能比较难解决,但是以下规则适合大多数情况:

一个外在的COLLATE子句可压缩性是0(根本不能压缩。)使用不同校对规则的两个字符串连接的可压缩性是1。列校对规则的可压缩性是2。“系统常数”(如USER()或VERSION()函数返回的字符串)可压缩性是3。文字规则的可压缩性是4。NULL或从NULL派生的表达式的可压缩性是 5。

上述可压缩性值是mysql当前所用的。

这样上述规则可以模糊解决:

使用最低的可压缩性值的校对规则。如果两侧有相同的可压缩性,那么如果校对规则不同则发生错误。

使用COERCIBILITY()函数确定一个字符串表达式的可压缩性:


1 2 3 4 5 6 mysql> SELECTCOERCIBILITY(‘A‘ COLLATE latin1_swedish_ci);     -> 0 mysql> SELECTCOERCIBILITY(VERSION());     -> 3 mysql> SELECTCOERCIBILITY(‘A‘);     -> 4 

mysql之字符集与校对集

标签:

热心网友 时间:2022-04-07 22:59

在mysql的命令行 输入set names'gbk'
建议用gbk

热心网友 时间:2022-04-08 00:17

下载个phpmyadmdin,里面有的

热心网友 时间:2022-04-08 01:52

http://dev.mysql.com/doc/refman/5.1/zh/charset.html这有教程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小白开始做牛腩烧番茄前,应该做哪些准备? 普洱茶不管是纯料还是拼配它本身就很有意思 普洱茶的纯料VS拼配,谁更值得珍藏? 为什么我们听到熟悉的歌曲的音乐会感觉在唱歌词呢? abs制动防抱死系统什么时候用到 请问有谁知道离朝阳北路的煊特嘉园(炫特区)最近的浩沙健身俱乐部在哪 ... 朝阳北苑郊野公园有哪些 北苑哪些公园 北京北苑健身有哪些 王者荣耀黄忠开大怎么转圈 鳕鱼裙带菜大豆腐能在一起做吗? 裙带裙带菜炖白菜可以吗? 王者荣耀助手里的聊天室被禁言了,怎么办? 大连裙带菜除了熬汤还能怎么吃? 王者营地被禁言别人还可以给我发消息吗 群常可以烧汤吃吗? 王者荣耀禁言超过十天怎么查询不到该怎样查询? 王者营地如何看自己被禁言多久? 有人知道,被人玩王者荣耀,怎么会把王者营地和其它APP登录的被禁用了? 裙带菜和豆腐可以一起煮吗 王者营地里被禁言,怎么查自己被禁言多久? 裙带菜可以和豆腐一起吃吗 如何查看王者被禁言了多久 捷赛#裙带菜炖豆腐的家常做法大全怎么做好 王者荣耀禁言但是查不到 王者禁言了查不到时间 裙带豆腐汤的家常做法 王者荣耀禁言最长多久 王者荣耀禁言但是查不到怎么办? 王者营地一般禁言多久? 裙带菜和豆腐相克吗 长沙哪里有免费货源手工外发加工 在网上能找到真实可靠的手工活外发吗 手工活外发加工 外发加工手工活都是骗人的吗 急求!毛线编织兔子娃娃的方法,要图解! 歇字猜一生肖 歇猜一生肖 歇猜一生肖? 歇。指什么生肖??谢谢你 毛线编织小动物工艺品的方法步骤,选择毛线的质地和颜色。 "歇"字和十二生肖哪只有关? 歇表示什么数字,什么生肖 怎样手工编织可爱的毛线小狗 传为佳话,日行夜歇是什么生肖 蓝天之下有歇声是什么生肖 随意四一春方歇打一生肖 歇尽努力,方到高处,还须平静勿娇傲,打一生肖 那种毛线勾的玩具叫什么? 牛困人饥日己高,市南门外泥中歇。此诗求高手指点一动物