Chinaunix首页 | 论坛 | 博客
  • 博客访问: 310972
  • 博文数量: 163
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -40
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-08 00:28
文章分类

全部博文(163)

文章存档

2015年(2)

2014年(35)

2013年(28)

2012年(30)

2011年(22)

2010年(14)

2009年(8)

2008年(13)

2007年(11)

分类: Mysql/postgreSQL

2014-02-13 11:28:58

MySQL 安装后默认的字符集是 latin1,这样在处理中文时容易出现乱码问题,所以需要改为 utf8。

注:我的MySQL版本是5.6.*。

用语句 show variables like 'character%'; 查看MySQL当前的字符集设置(也可以使用命令 status查看):

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/share/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.03 sec)

从结果可以看出,MySQL字符集涉及到:

  • 客户端使用的字符集:character_set_client
  • 客户端域服务器之间的连接使用的字符集:character_set_connection
  • 数据库实例使用的字符集:character_set_database
  • MySQL服务器使用的字符集:character_set_serve

这些字符集都可以在配置文件 my.cnf 里配置,增加如下配置:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8

修改后要重启MySQL服务。

对于已创建的数据库实例的编码,可以用语句 alert database blog character set utf8; 修改。

对于已登录的会话,可以用语句 set names utf8; 来修改当前会话的字符集,它会把 character_set_client,character_set_connection,character_set_results 修改为 utf8编码,只对当前会话有效,每次登录要重新设置。

如果创建表的时候没有指定字符编码,也是 latin1的,且表里的数据也这样,这时就需要把表结构和数据分别用 latin1 编码导出来,再把表的创建语句里指定为 utf8,同时把数据的 sql 文件也改为 utf8,可以在本地的文本编辑器里修改,然后再把数据重新导入。


原文地址: 

阅读(694) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~