MySQL字符集

MySQL字符集包括字符集(character)和(collation)两个概念。字符集是用来定义MySQL存储字符串的规则,校对规则则是定义了比较字符串的方式。字符串和校对规则是一对多的>关系。使用命令:show collation like 'gbk';可查看相关的校对规则;使用:show character set;查看所有可用的字符集。
校对规则命名约定:它们以其相关的字符集开头,通常包括一个语言名,以一个_ci(不区分大小写)、_cs(大小写敏感)或_bin(二元,即比较是基于字符集编码的值而与language无关)结束。
MySQL的字符集和校对规则有4个级别的默认值:服务器级、数据库级、表级和字段级。
服务器字符集设定(默认为:latin1作为服务器字符集):
        在my.cnf中设定:default-character-set=gbk
        在服务器启动时指定:mysqld --default-character-set=gbk
        在编译的时候制定:./configure --with-character=gbk
使用命令:show variables like 'character_set_server';查看当前服务器使用的字符集和校对规则。
数据库的字符集和校对规则在创建数据库的时候指定,也可以在创建完数据库后通过'alter table'命令进行修改。需要注意的是修改数据库字符集不会更改已经存在的数据的字符
集。命令:show variables like 'chaacter_set_database';查看数据库当前使用的字符集。
表字符集和校对值:表的字符集可在床家表时指定,也可以通过alter table命令进行修改,同样,如果表中已有记录,修改字符集对原有的记录并没有应吸纳个。
列字符集和校对:MySQL同时支持对列级别的字符集进行定义,可以针对相同表的不同字段分别定义字符集和校对规则。
链接字符集和校对规则
    在实际的应用访问中,还存在客户端和服务器之间的字符集和校对规则的设置。
    对于客户端和服务器的交互操作,MySQL提供了3个不同的参数:character_set_client、character_set_connection和character_set_results,分别代表客户端、链接和返回
结果的字符集,通常情况下,这3个字符集应该是相同的,才可以确保用户写入的数据能够正确读取出来。
    命令:set names ***;可以用来同时修改这3个参数的值。使用这个方法修改链接的字符集和校对规则,需要应用每次链接数据库后都执行这个命令。
    在配置文件my.cnf中通过设置:default-character-set=gbk 这样服务器启动后,所有链接默认就是使用GBK字符集进行链接。

原文地址:https://www.cnblogs.com/gbyukg/p/2245048.html