MySQL字符集设置

来源:互联网 发布:曼奇立德网络班 编辑:程序博客网 时间:2024/06/05 06:20

MySQL连接字符集设置

u  设置的两种方式:

l  用SQL命令"SET NAMES 字符集名";每次连接数据库都得执行一次。

n  如:SET NAMES 'gbk';

l  在my.ini中设置(Linux是my.cnf):

n  [mysql]

         default-character-set=gbk

u  显示当前客户端的字符集:

l  SHOW VARIBLES LIKE 'character_set_client';

 

      已有数据的字符集修改

u  不能直接用ALTER DATABASE CHARACTER SET xxx进行字符集的修改,这样原有数据会乱码的。

u  对于已有数据的字符集调整,需要先导出数据,调整字符集后在导入

 

         总结

                   常用字符集

                            ASCII

                            ISO-8859-1

                            GB2312

                            GBK

                            UTF-8

 

      目标

u  MySQL字符集设置

l  常用字符集介绍

l  MySQL字符集设置

 

      常用字符集概述

u  字符集(charset):是一套文字符号及其编码的集合。

 

u  ASCII

l  单字节7为编码。共可表示127个字符

l  大小写英文字母、阿拉伯数字和标点符号以及33个控制符号

l  美式字符集

 

u  ISO-8859-1(Latin1)

l  单字节8为编码。共可表示255个字符

l  与ASCII编码兼容

l  把其他任何编码的字节流当做ISO-8859-1编码看待都没有问题。所以经常用来转码

l  西欧字符集

        

      中文字符集

u  GB2312

l  双字节编码

l  包括对简体中文字符的编码,一共收录了7445个字符,包括6763个汉字和682个其他符号,未收录繁体中文汉字和一些生僻字。

l  与ASCII字符编码兼容

l  早期中文标准

 

u  GBK

l  双字节编码

l  完全兼容GB2312,收录了21886个字符,包括繁体和简体中文字符

l  GB2312的扩展。使用广泛

 

u  GB18030

l  2或4字节编码     

l  向下兼容GBK和GB2312标准,收录了27484个汉字

l  中文新标准。但目前使用不广泛

        

      Unicode字符集

u  Unicode字符集包括全世界所有语言的文字和符号

l  它为每种语言中的每个字符设定了统一并且唯一的二进制编码

 

u  Unicode的常用实现

l  UTF-16:    用固定的2字节存储一个Unicode字符

n  Java和windows xp内使用   

l  UTF-8:   用1~6个字节存储一个Unicode字符

n  互联网和UNIX/Linux广泛支持,MySQLServer内部也使用

n  英文字母、数字和符号用一个字节存储,中文用三个字节存储

 

      MySQL支持的字符集

u  MySQL的字符集设置包括字符集(charset)和校对规则(Collations)两个方式。

u  字符集:是用来定义MySQL存储字符串的方式。

l  显示所有可用的字符集:SHOW CHARACTER SET;

u  校对规则:是在字符集内用于比较字符的一套规则。

l  校对规则命名约定:以相关的字符集命名看是,然后通常包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元,即比较是基于字符编码的值而与语言无关)结束。

l  如:字符集gbk,它对应的默认校对规则是:gbk_chinese_ci。

l  显示所有可用的字符校对规则:SHOW COLLATION;

n  SHOW COLLATION LIKE 'gbk%';

 

      MySQL的字符集选择

u  字符集选择:

l  支持国际化:选择Unicode字符集,目前就是UTF-8。

l  中文数据量大:GBK。

u  校对规则选择:

l  基本上都是使用默认的校对规则。

 

      MySQL字符集设置

u  有4个级别的默认设置:

l  服务器级

n  可在my.ini中设置(Linux是my.cnf):

                                               -[mysqld]

                                                default-character-set=gbk

n  默认校对规则使用该字符集的校对规则。

                                               -显示当前服务器的字符集:SHOW VARIABLES LIKE'character_set_server';

                                               -显示当前服务器的校对规则: SHOW VARIABLES LIKE'collation_server';

l  数据库级

n  创建数据库的时候指定,也可以用ALTER DATABASE修改。

n  没有指定时,使用服务器的字符集和校对规则。

l  表级

n  创建表的时候指定,也可用ALTER TABLE修改。

n  没有指定时,使用数据库的字符集和校对规则。

l  列级

n  很少使用。                      

 

      MySQL连接字符集

u  在实际的应用程序访问过程中,还需要设置连接字符集。对于客户端和服务器的交互操作,还提供了3个不同的参数:                  

l  character_set__client:    客户端的字符集

l  character_set_connection:     连接的字符集

l  character_set_results:   返回结果的字符集

l  通常这三个字符集是要相同的,才能保证数据的正确性。

 

u  客户端访问MySQL服务器的过程

l  client发送一个查询:服务器收到查询,将查询串从character_set_client转换到character_set_client转换到character_set_connection,然后执行查询;服务器将结果数据转换到character_set_results字符集后发送回客户端。


原创粉丝点击