Mysql字符集设置

基本概念

字符(Character)是指人类语言中最小的表义符号。例如’A'’B'等;
给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给字符’A'赋予数值0,给字符’B'赋予数值1,则0就是字符’A'的编码;
给定一系列字符并赋予对应的编码后,所有这些字符和编码对组成的集合就是字符集(Character Set)。例如,给定字符列表为{’A',’B'}时,{’A'=>0, ‘B’=>1}就是一个字符集;
字符序(Collation)是指在同一字符集内字符之间的比较规则;
确定字符序后,才能在一个字符集上定义什么是等价的字符,以及字符之间的大小关系;
每个字符序唯一对应一种字符集,但一个字符集可以对应多种字符序,其中有一个是默认字符序(Default Collation)
• MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)_cs(表示大小写敏感)_bin(表示按编码值比较)结尾。例如:在字符序“utf8_general_ci”下,字符“a”“A”是等价的;

MySQL字符集设置

系统变量:
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
还有以collation_开头的同上面对应的变量,用来描述字符序。

 
检测字符集问题的一些手段
    • SHOW CHARACTER SET;

• SHOW COLLATION;
    • SHOW VARIABLES LIKE ‘character%’;
    • SHOW VARIABLES LIKE ‘collation%’;
    • SQL函数HEXLENGTHCHAR_LENGTH
    • SQL函数CHARSETCOLLATION


Mysql字符集设置

修改默认字符集
(1) 最简单的修改方法,就是修改mysqlmy.ini文件中的字符集键值,
        default-character-set = utf8
      character_set_server =  utf8
     修改完后,重启mysql的服务
(2) 还有一种修改字符集的方法,就是使用mysql的命令
     mysql> SET character_set_client = utf8 ;
     mysql> SET character_set_connection = utf8 ;
     mysql> SET character_set_database = utf8 ;
     mysql> SET character_set_results = utf8 ;
     mysql> SET character_set_server = utf8 ;
     mysql> SET collation_connection = utf8 ;
     mysql> SET collation_database = utf8 ;
     mysql> SET collation_server = utf8 ;

通过show variables like 'character_set%%';查看编码

修改mysql的编码方式可以有以下几个:

1.通过配置文件修改my.ini(windows)/etc/my.cnf(linux)

分别添加如下内容

[mysqld]

character_server_set=utf8

[mysql]

default-character-set=utf8

[mysql.server]

default-character-set=utf8

[mysql_safe]

default-character-set=utf8

[client]

default-character-set=utf8

2.创建数据库时设置编码

create database test character set utf8;

3.创建表时设置编码

create table test(id int primary key)DEFAULT charset=utf8;

4.修改数据库编码

alter database test character set utf8;

5.修改表默认编码

alter table test character set utf8;

6.修改字段编码

alter table test modify col_name varchar(50) CHARACTER SET utf8;

 character_set_server:默认的内部操作字符集

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

 character_set_connection:连接层字符集

 character_set_results:查询结果字符集

 character_set_database:当前选中数据库的默认字符集

 character_set_system:系统元数据(字段名等)字符集

除了characterEncoding设置编码格式为UTF-8,其余只要是有UTF-8的选项都是错的