暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
精通MySQL字符集与校对集
369
6页
3次
2020-03-26
5墨值下载
资源由 www.eimhe.com 美河学习在线收集分享
MySQL 字符集与校对集
=======================================================
set character_set_client=gbk; ### 设置客户端给你的是 gbk
set character_set_connection=gbk; ### 设置转换器 gbk
set character_set_results=gbk; ### 服务端返回 gbk
如果以上 3 者都为字符 N,则可以简写成 set names N;
create table 表名(
列声明
)charset utf8;
mysql 的字符集设置非常灵活
可以设置服务器默认字符集
数据库默认字符
表默认字符集
列默认字符集
如果某一个级别没有指定字符集,则继承上一级
以表声明 utf8 为例:存储的数据在表中,最终的是 utf8;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
create table tmp ( name varchar(10) )charset utf8;
insert into tmp values ('中国');
select * from tmp;
set character_set_results=gbk;
select * from tmp;
推论:什么时候会乱码?
1client 声明与事实不符。
2results 与客户端页面不符的时候。
什么时候将会丢失?
转换时的编码 connection 和服务器的字符集比 client 范围小时。
mysql> show character set like 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
资源由 www.eimhe.com 美河学习在线收集分享
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
+---------+-----------------------------+-------------------+--------+
4 rows in set (0.00 sec)
set character_set_client=utf8;
set character_set_connection=latin1; ### 数据已经丢失
set character_set_results=utf8;
insert into tmp values ('雷锋'); ### 数据已经丢失
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
mysql>
【校对集】:字符集的排序规则。
一种字符集可以有一个或多个排序规则
utf8 为例,我们默认使的 utf8_general_ci 规则,也可以按二进制来排列utf8_bin
怎么样声明校对集?
create table () .... charset utf8 collate utf8_general_cli;
注意声明的校对集必须是字符合法的校对
truncate tmp;
insert into tmp values ('a'),('B'),('c'),('D');
select * from tmp order by name asc;
#排序必须按照某种规则排序。
show character set; ### 字符集
of 6
5墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜