use db_name; status; #查看数据库db_name的编码 show create database db_name; #查看数据库db_name的编码 show create table tb_name; #查看表tb_name的编码 status; #查看数据库服务器端和客户端字符集 show variables like 'character%';
====
查看字符集设置:
mysql> show variables like 'collation_%'; mysql> show variables like 'char_%';
====
mysql> alter database db_a character set gbk; #修改数据库的字符集编码方式
参考链接:深入Mysql字符集设置
MySQL字符集设置
• 系统变量:
– character_set_server:默认的内部操作字符集
– character_set_client:客户端来源数据使用的字符集
– character_set_connection:连接层字符集
– character_set_results:查询结果字符集
– character_set_database:当前选中数据库的默认字符集
– character_set_system:系统元数据(字段名等)字符集
– 还有以collation_开头的同上面对应的变量,用来描述字符序。
在my.cnf中设置MySQL的默认字符集编码为utf-8
change mysql default character set to UTF8 in my.cnf?
To set the default to UTF-8, you want to add the following to my.cnf
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
原文链接:
http://stackoverflow.com/questions/3513773/change-mysql-default-character-set-to-utf8-in-my-cnf
在默认情况下,如果不在安装的时候指定编码的话,MySQL会默认使用latin1的编码(不知道为什么不用utf8作为默认编码?因为MySQL最初是瑞典的一家公司(MySQL AB)开发的,所以默认的字符集是latin1),然后,各种问题就来了……
不修改配置文件,只将当前的表/数据库存取设置为utf8
- 设置表的编码为utf8(可以先使用:show create table tb_name; 查看当前编码格式)
- 连接的时候指定编码为utf8
- 文件的格式、字符串的编码为utf8
可以在建立database、table的时候手动指定编码方式,然后在存入数据的时候将连接的方式也修改为对应的编码方式即可(可能会需要在显示之前先执行命令“set names ‘utf8’;”这样之类的),之后在显示的时候再执行个命令“set names ‘utf8’;”应该就差不多了。
《 “MySQL字符集设置的学习” 》 有 4 条评论
如何快速定位到MySQL的配置文件的位置:
`$ mysqld –help –verbose
$ mysqld –help –verbose | grep “Default options” -A 1
$ sudo find / -type f -iname “my.cnf”
`
http://stackoverflow.com/questions/2482234/how-to-know-mysql-my-cnf-location
http://stackoverflow.com/questions/3270326/how-to-find-out-the-location-of-currently-used-mysql-configuration-file-in-linux
默认情况下,你用yum安装了MySQL就会自动生成一个my.cnf配置文件,但是对于部分Percona版本来说,它不会自动生成my.cnf这个配置文件,需要你手动创建并显示指定。[http://stackoverflow.com/questions/7020836/where-is-perconas-my-cnf-file]
[https://bugs.launchpad.net/percona-server/+bug/673844]
如何确定MySQL用的是哪个配置文件?
http://stackoverflow.com/questions/580331/determine-which-configuration-file-is-being-used
http://ronaldbradford.com/blog/how-do-i-identify-the-mysql-my-cnf-file-2010-03-09/
http://dba.stackexchange.com/questions/703/confirm-that-my-cnf-file-has-loaded-ok
`
1.未运行状态下
$ strace “$(which mysqld)” | grep –color “my.cnf”
2.运行状态下
$ “$(which mysqld)” –verbose –help | grep -A 1 “Default options”
`
深入Mysql字符集设置
http://www.laruence.com/2008/01/05/12.html
MySQL字符集乱码总结
http://blog.csdn.net/ithomer/article/details/5130789
10分钟学会理解和解决MySQL乱码问题
http://cenalulu.github.io/mysql/mysql-mojibake/
关于MySQL的字符集
http://www.letiantian.me/2013-08-10-mysql-charset/
MySQL 如何修改 utf8mb4 字符集
https://help.aliyun.com/knowledge_detail/41692.html
http://ourmysql.com/archives/tag/%E5%AD%97%E7%AC%A6%E9%9B%86
UTF8字符集的表怎么直接转UTF8MB4?
https://mp.weixin.qq.com/s/VWVKy16gMJ_kFeICsyMiVw
`
utf8是utf8mb4的子集,一般情况下,应该是可以直接修改表字符集的。
方法一:修改表默认字符集
mysql> alter table j1 default character set utf8mb4;
随后再修改所有字符型列的字符集
mysql> alter table j1 modify name varchar(20) character set utf8mb4 not null default ”;
方法二:也是执行ALTER TABLE来修改,但有更简单的解法
mysql> alter table j1 convert to character set utf8mb4;
备注:上面两种方法,其实是有区别的。
采用方法一,如果遇到某个列字符集转换完后字节数超限了,会提示错误。
而采用方法二,如果遇到某个列字符集转换完后字节数超限了,则会将这个列数据类型转换成可以容纳更大长度的类型,比如从 TEXT 转成 LONGTEXT 等。
方法三
如果不放心,可以用mysqldump逻辑备份方式,用utf8mb4字符集把数据备份出来,新建表,恢复回去,应该也可以的。
`