mysql 字符集(转)

问题:mysql error 1366

连接使用:?useUnicode=true&characterEncoding=utf-8

查看表的字符集(SHOW FULL COLUMNS FROM isp; )为latin1_swedish_ci

修改为utf-8即可(ALTER TABLE isp  CONVERT TO CHARACTER SET utf8)

1.列出MYSQL支持的所有字符集: 

SHOW CHARACTER SET;

2.当前MYSQL服务器字符集设置 

SHOW VARIABLES LIKE 'character_set_%';

3.当前MYSQL服务器字符集校验设置 

SHOW VARIABLES LIKE 'collation_%';

4.显示某数据库字符集设置 

show create database 数据库名;

5.显示某数据表字符集设置 

show create table 表名;

6.修改数据库字符集 (须要先use 库)

alter database 数据库名 default character set 'utf8';

7.修改数据表字符集 

1.修改默认字符集,注意此语句不会修改列的属性
 alter table 表名 default character set utf8 collate utf8_bin;
2.修改表和列的属性
 alter table 表名  CONVERT to  character set utf8 collate utf8_bin;

8.建库时指定字符集 

create database 数据库名 character set gbk collate gbk_chinese_ci;

9.建表时指定字符集 

CREATE TABLE `mysqlcode` (
`id` TINYINT( 255 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`content` VARCHAR( 255 ) NOT NULL
) TYPE = MYISAM CHARACTER SET gbk COLLATE gbk_chinese_ci;

 10.设备客户端显示的字符集(命令行中用select查看的字符集)

set names("utf8")

库字符集,在my.cnf中缺少了如下代码: 
[client] 
default-character-set=utf8 
[mysqld] 
default-character-set=utf8


如果不加以上代码,那么即便MYSQL编译安装时指定的编码是UTF8,那么在建库时其默认编码仍是LATIN1,而由于字符集的继承性,库中的表也是LATIN1的了。

windows下的方法是:
1、windows系统

win下可使用类似如下语句处理。通过命令行进入mysql/bin所在目录。
D:\usr\mysql41\bin>mysqldump -uroot -p --quick --compatible=mysql40 --default-character-set=latin1 --extended-insert=FALSE test2 > d:\zzz.sql

test2是你想导出数据的数据库名,d:\是路径,设置成你希望的路径就行了,zzz.sql是随意命名的文件,名称随意,只要有.sql后缀名就行了。

程序会提示你输入root的用户密码(如果存在密码的话),输入,程序开始导出。500MB的数据2-3分钟就完成了。


2、第二步,通过phpmyadmin建立一个新库,库名:test ,采集字符集设定为utf8-general-li 或gb2312

3、将备份出来的sql文件导入新数据库。

D:\usr\mysql41\bin>mysql -uroot -p --default-character-set=utf8 test < d:/zzz.sql 

D:\usr\mysql41\bin>mysql -uroot -p --default-character-set=gb2312 test < d:\zzz.sql

这一步花的时间相对较长,200MB数据花了10分钟左右。

猜你喜欢

转载自692088846.iteye.com/blog/1944844
今日推荐