免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1617 | 回复: 0
打印 上一主题 下一主题

mysql 5.x使用utf8作为默认字符集 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-30 16:27 |只看该作者 |倒序浏览

               
默认情况下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
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16288/showart_1949661.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP