您的位置:首页 > 数据库

修改数据库字符集

2013-10-11 12:01 197 查看
u 不能直接用ALTER DATABASE CHARACTER SET xxx进行字符集的修改,这样原有数据会乱码的。

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

总结

常用字符集

ASCII

ISO-8859-1

GB2312

GBK

UTF-8

MySQL的字符集选择

字符集选择:

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

中文数据量大:GBK。

校对规则选择:

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

MySQL字符集设置

有4个级别的默认设置:

服务器级

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

- [mysqld]

default-character-set=gbk

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

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

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

数据库级

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

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

表级

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

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

列级

很少使用。

MySQL连接字符集

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

character_set__client: 客户端的字符集

character_set_connection: 连接的字符集

character_set_results: 返回结果的字符集

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

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

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

mysql> show variables like 'character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

设置变量character_set__client、character_set_connection:

需要在mysql>中进行设置,如下:

Set character_set__client=gbk;

Set character_set_connection=gbk;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: