Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159541
  • 博文数量: 60
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 617
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-24 10:59
文章分类

全部博文(60)

文章存档

2022年(2)

2020年(23)

2019年(1)

2010年(1)

2009年(33)

我的朋友

分类: Mysql/postgreSQL

2009-05-30 16:27:29

Sideway xtadw@yahoo.com.cn

默认情况下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
阅读(934) | 评论(0) | 转发(0) |
0

上一篇:搬新家了

下一篇:gdm自动登录

给主人留下些什么吧!~~