日期:2014-05-16  浏览次数:20400 次

msyql中文乱码问题

参考:http://hi.baidu.com/ayongs/item/30f784122c8d51a5ffded509

http://www.2cto.com/database/201108/101151.html

http://www.laruence.com/2008/01/05/12.html

mysql5.1参考手册

一.mysql字符集

MySQL 4.1及以上版本的字符集支持(Character Set Support)有两个方面:字符集(Character Set)和校对规则(Collation)。 字符集和校对规则有4个级别的默认设置:服务器(server),数据库(database),数据表(table)和连接(connection)。

  MySQL 中是根据下面几个变量确定服务器端和客户端用的什么字符集:

  character_set_client     客户端字符集

  character_set_connection   客户端与服务器端连接采用的字符集

  character_set_results     SELECT查询返回数据的字符集

  character_set_database    数据库采用的字符集

在服务器级别,确定方法很简单。当启动mysqld时,根据使用的初始选项设置来确定服务器字符集和 校对规则。如:mysqld --default-character-set=utf8,如果启动mysql时没有指定 --default-character-set选项,那么默认的服务器级字符集为编译mysql时指定的字符集,由configure时的:--with-charset和--with-collation选项确实,默认的字符集为latin1.


每一个数据库有一个数据库字符集和一个数据库校对规则,它不能够为空。CREATE DATABASE和ALTER DATABASE语句有一个可选的子句来指定数据库字符集和校对规则:

CREATE DATABASE db_name
    [[DEFAULT] CHARACTER SET charset_name]
    [[DEFAULT] COLLATE collation_name]
如 create database ulogd default character set utf8;

如果创建数据库时没用指定字符集,那么该数据库默认的字符集为当前服务器所使用的字符集。


每一个表有一个表字符集和一个校对规则,它不能为空。为指定表字符集和校对规则,CREATE TABLE 和