1、查看mysql相关编码
--查看mysql数据库所支持的编码 show character set; --查看当前变量中的一些编码情况 show variables like 'character%'; --查看某个数据库的编码 SHOW CREATE DATABASE db_name; --查看某个表的字符集 SHOW CREATE TABLE table_name; SHOW TABLE STATUS LIKE 'table_name';
2、参数说明:
character_set_client:客户端来源数据使用的字符集
character_set_connection:连接层字符集
character_set_database:当前选中数据库的默认字符集
character_set_filesystem:文件保存格式
character_set_results:查询结果字符集
character_set_server:默认的内部操作字符集
character_set_system:系统元数据(字段名等)字符集
character_sets_dir:mysql编码文件放置位置
3、MySQL中的字符集转换过程
1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
• 使用每个数据字段的CHARACTER SET设定值;
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。
3. 将操作结果从内部操作字符集转换为character_set_results。
4、一些小技巧
1)通过使用set names utf8(gbk)等编码修改命令在database级别,可以实现修改
character_set_client、character_set_connection、character_set_results操作
2)要正常显示数据,要确保display的平台的编码和character_set_results中的编码一致,如:默认情况,win的dos中编码为gbk,linux的shell下编码为utf8,如果要使用同一个数据库能够都正常显示,需要使用set names utf8(gbk)等操作
3)MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏感)、_cs(表示大小写敏感)或_bin(表示按编码值比较)结尾,例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;
5、my.cnf/my.ini中相关参数设置
default_character_set设置只影响mysql命令连接服务器时的连接字符集
init_connect=’SET NAMES utf8’非超级用户建立连接时执行set names utf8
init_connect=’set collation_connection=utf8_general_ci’
在[client] 中设置
default-character-set=utf8
影响下面三个参数
character_set_client
character_set_connection
character_set_results
在[mysqld]中设置
default-character-set=utf8
影响下面两个参数
character_set_database
character_set_server
这样mysql就可以基本上使用utf8编码工作了,如果客户端是gbk编码的,可以使用set names gbk进行临时修改