您的位置:首页 > 数据库 > MySQL

MySQL字符集设置

2012-06-30 12:12 309 查看

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字符集后发送回客户端。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: