首页 > SQL学习 > SQL基础知识 > SQL数据库字符编码
2016
12-16

SQL数据库字符编码

一、MySQL支持的字符集

1.查看所有可用的字符集

show character set; 或者 information_schema.character_sets;

2.MySQL的字符集包括字符集(character)和校对规则(collation)两个概念。

1)字符集用来定义MySQL存储字符串的方式

2)校对规则用来定义 字符串比较的方式

3)字符集和校对规则是一对多的关系,一个字符集有多个校对规则供你选择!

校对规则命名约定:它们以相关的字符集名开始,通常包括一个语言名,并且以

_ci(忽略大小写)、

_cs(大小写敏感)或者

_bin(二元,即比较是基于字符编码的值而与language无关)结束。

查看字符集的校对规则:

show collation like '字符集前缀%';

二、MySQL内部的字符集和校对规则设置

1.服务器字符集和校对规则设置

MySQL内部的字符集和校对规则有4个级别的默认设置:服务器级、数据库级、表级和字段级

2.数据库字符集和校对规则设置

设置数据库的字符集和校对规则:

sreate database 数据库名 [default] character set 字符集名字 [default] collate 校队规则;

查看当前数据库的字符集和校对规则:

show variables like 'character_set_database';

show variables like 'collation_database';

修改数据库的字符集和校对规则:

alter database 数据库名 [default] character set 字符集名字 [default] collate 校队规则;

如果数据库里已经有数据存在,因为修改字符集并不能将已有的数据按照新的字符集进行存放,所以不能通过修改数据库的字符集直接修改数据的内容,需要重新导出,然后修改字符编码再导入来解决!

3.表字符集和校对规则设置

设置某个表的字符集和校对规则:

create table 表名 (字段语句) [default] character set 字符集名字 [default] collate 校队规则;

修改某个表的字符集和校对规则:

alter table 表名 (字段语句) [default] character set 字符集名字 [default] collate 校队规则;

4.字段(列)字符集和校对规则

遇到这种情况概率比较小。

三、MySQL连接字符集设置:

客户端和服务器端之间交互的字符集

1.对于客户端和服务器段的交互操作,MySQL提供了3个不同的参数:

1)character_set_client:客户端来源数据使用的字符集

2)character_set_connection:连接层字符集

3)character_set_results:返回结果字符集

这3个参数设定的字符集应该相同,并且客户端使用的字符集确实是参数character_set_client的值,才可以确保用户的数据可以正确的返回且输出。

查看当前设置:show variables like 'character_set%';

修改:

set names 字符集,可以同时修改3个参数的值,对本次有效

也可以在配置文件中设置:

[mysql]

default-character-set=字符集

修改CMD命令行字符集:

chcp 65001 #换成utf-8代码页(设置为utf-8之后最好手动修改显示字体 )

chcp 936 #换成默认的gbk

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。