MySQL显示中文
http://www.cnblogs.com/livingintruth/p/3433259.html
这两天在学习webpy,把webpy的一个blog例子扒下来学习一下,默认创建的table当存入中文的时候是乱码,研究了一下这个问题。
1,创建table的时候就使用utf8编码
举个例子:
1 create table entries2 ( 2 id int auto_increment, 3 title text, 4 content text, 5 posted_on datetime, 6 primary key (id) 7 ) character set = utf8;
在每次创建表的时候都在最后加上
character set = utf8
就可以很好的支持中文。
2,修改已经有的table的编码
当使用默认编码创建了一个table的时候,是不能支持中文的,这时候使用如下语句对table_name进行修改:
alter table table_name convert to character set utf8;
此后再往这个table插入中文的时候,就可以正常存储和读取了,但不知道为什么之前的乱码还是不能纠正,只能新插入的数据没有问题。
[注意] 我google了一下,有些地方说这个命令也行,但是我测试以后并不行
alter table table_name charset=utf8; #这个语句并没有让table_name支持中文
修改table编码前:
修改为utf8后并插入一行数据:
可以看到已支持中文,但之前的3行还是没有改变。
3,修改table中一个column的编码
这个我目前还没发现需要在实际中使用到,但是测试了很多次,语句如下:
alter table entries modify title mediumtext character set utf8;
其中entries是我的table名,title是我要修改的column字段,mediumtext是title的类型。
即使是修改table某个字段的编码,也没有做到让之前的乱码变成中文。
4,如何查看一个database,一个table的编码
查看database的编码,假如database名字为webpy:
show create database webpy;
查看一个table的编码,假如table名为entries2:
show create table entries2;
效果如下,其实表中每个字段编码都是utf8,表的default的utf8的,所以没有单独显示每个字段的。
5,修改mysql的配置文件,让mysql默认编码为utf8
在我的ubuntu机器上,mysql的配置目录为/etc/mysql
而我们mysql使用的配置文件为
/etc/mysql/my.cnf
我们可以直接加在my.cnf中,当然为了方便移植可复用,也可以如下写在独立的配置文件中。
在my.cnf最后又include了 conf.d/ 下面所有的*.cnf文件,所以我们就在conf.d/下面加上一个我们自己的配置文件wy_sql.cnf
添加如下两行
[mysqld] character-set-server=utf8
再创建表的时候默认编码就是utf8了。
6, 显示的问题
上面改了服务器的字符编码,但是如果不改client的,在终端上显示的还是???
还需要在配置文件中加上
[client] default-character-set=utf8
通过
show variables like '%char%'
可以查看
和编码 "character" , 有关的变量
Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ |
7, 直接在mysql中使用 set 设置 变量
上面我们用show 查看了一些变量的值
那么可以直接用set来设置,但是这是临时的,下次启动后还是以配置文件的为准
set character_set_result = utf8
- 小结mysql 不能显示中文的解决办法
- mysql不能显示中文
- MySQL 中文显示乱码
- 连接mysql server 5.0 数据库的乱码问题,utf8编码,中文正确显示
- MySQL 中文显示乱码
- jsp连接mysql 并正常显示中文
- mysql中插入和显示中文字符问题
- mysql 中文不显示 (http://zhidao.baidu.com/question/88367447.html)
- Mysql在命令行下显示中文乱码的解决办法
- MySQL 中文显示乱码问题解决汇总
- PHP MySQL中文内容显示乱码
- mysql在dos下查询怎么正确显示中文的问题
- 转帖:ROR与MySQL的中文显示
- 在MySQL中显示中文的方法
- 解决MySQL不能显示中文问题
- SQlyog是mySQl的UGI版,默认情况下中文显示会出现乱码
- mysql中文显示问题
- flash + amfphp + mysql 显示中文解决方法
- 关于struts2,mysql,hibernate的开发环境下的中文显示为“问号”的问题总结
- MySQL 中文显示乱码