mysql 5.x使用utf8作为默认字符集
时间:2009-05-30 来源:sideway
默认情况下mysql使用latin1作为自己的默认字符集,为使mysql使用utf8作为默认字符集我们可以通过以下几个步骤来实现:
一、修改/etc/my.cnf配置文件:
1. 在[mysqld]段中添加default-character-set=utf8
2. 添加一个[client]段并在其后添加default-character-set=utf8
二、重启mysql服务
service mysqld restart
三、验证结果
mysql -u root -p
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
备注:(以下从网络摘抄)
另外可以通过CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;来建立utf8字符集的数据库
我们可以完全无视数据库默认的字符集是什么,我们关心的只有数据库在建立的时候是不是加入了字符集
选择。
(1)使用如下指令建立数据库:
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
(2)客户端php程序使用如下方法设定连接所使用的字符集:
PHP程序在查询数据库之前,执行mysql_query("set names utf8;");
例子:
1. 2. mysql_connect('localhost','user','password');
3. mysql_select_db('my_db');
4.
5. //请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
6. //它的作用是设置本次数据库联接过程中,数据传输的默认字符集
7. mysql_query("set names utf8;");
8.
9. //必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
10. mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
11. ?>
(3)如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中
文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询
排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
自此,使用utf8字符集的完整的例子结束了。
三、旧数据升级办法
(1) 导出数据库:
mysqldump -uroot -p123456 --default-character-set=latin1 --set-charset=utf8 --opt olddatabase > newdatabase.sql
(2) 修改newdatabase.sql,在文件开头增加一条sql语句: “SET NAMES utf8;“,保存。
(3)mysql -hlocalhost -uroot my_db
一、修改/etc/my.cnf配置文件:
1. 在[mysqld]段中添加default-character-set=utf8
2. 添加一个[client]段并在其后添加default-character-set=utf8
二、重启mysql服务
service mysqld restart
三、验证结果
mysql -u root -p
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
备注:(以下从网络摘抄)
另外可以通过CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;来建立utf8字符集的数据库
我们可以完全无视数据库默认的字符集是什么,我们关心的只有数据库在建立的时候是不是加入了字符集
选择。
(1)使用如下指令建立数据库:
CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
(2)客户端php程序使用如下方法设定连接所使用的字符集:
PHP程序在查询数据库之前,执行mysql_query("set names utf8;");
例子:
1. 2. mysql_connect('localhost','user','password');
3. mysql_select_db('my_db');
4.
5. //请注意,这步很关键,如果没有这步,所有的数据读写都会不正确的
6. //它的作用是设置本次数据库联接过程中,数据传输的默认字符集
7. mysql_query("set names utf8;");
8.
9. //必须将gb2312(本地编码)转换成utf-8,也可以使用iconv()函数
10. mysql_query(mb_convet_encoding("insert into my_table values('测试');", "utf-8", "gb2312"));
11. ?>
(3)如果你想使用gb2312编码,那么建议你使用latin1作为数据表的默认字符集,这样就能直接用中
文在命令行工具中插入数据,并且可以直接显示出来.而不要使用gb2312或者gbk等字符集,如果担心查询
排序等问题,可以使用binary属性约束,例如:
create table my_table ( name varchar(20) binary not null default '')type=myisam default charset latin1;
自此,使用utf8字符集的完整的例子结束了。
三、旧数据升级办法
(1) 导出数据库:
mysqldump -uroot -p123456 --default-character-set=latin1 --set-charset=utf8 --opt olddatabase > newdatabase.sql
(2) 修改newdatabase.sql,在文件开头增加一条sql语句: “SET NAMES utf8;“,保存。
(3)mysql -hlocalhost -uroot my_db
相关阅读 更多 +