MySQL字符集的那些事情: 设置及转换
来源:互联网 发布:java方法重写 原则 编辑:程序博客网 时间:2024/06/05 16:54
在MySQl里面,字符集转换确实是个有点小头痛的问题,之前同事遇到过,自己用ODBC/C时也遇到过,现在总结下,以后遇到在修正此篇文章内容。
MySQL应用的character_set变量:
root@test 09:22:42>SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | /u01/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
MySQL修正collation变量:
root@test 07:46:23>SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
下面示意图阐述从客户端到服务器,然后再到客户端所经历的编码转换过程。
query -> _client (客户端准备发送query到网络的编码)
| (network: client -> network)
\|/
_connection (写网络转化后的编码, 一般都会和client一致)
| (network -> server)
_server & collation_server (服务器转换后的编码)
| (server -> mysql server)
\|/
_database & collation_database (数据库转换后的编码)
| (mysql server)
\|/
_table/_filed ... (数据库内的编码转换)
| (mysql server)
\|/
_filesystem (文件系统层的编码)
\|/
_database (服务器数据库转换后的编码)
| (mysql server)
\|/
_results (查询结果集转化后的编码)
| (mysql server)
\|/
_connection (服务器发送前转化后的编码)
| (network sending)
\|/
result <- _client (客户端接受到结果集的编码)
下图是一手图:
常用的2条set命令有何具体的意义呢,如下解释下:
A SET NAMES 'x' 等效于下面三条语句:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
A SET CHARACTER SET 'x' 等效于下面三条语句:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
好了,以上都是介绍编码的字符集,那么线上如何转化想要的字符集:
1. 按所需的字符集编码格式导出数据,然后按所需的字符集编码格式导入到数据库中。
这个是许多DBA推荐的方法。
2. 尝试在结果集/客户端转换,这个需要字符集之间兼容。
MySQL应用的character_set变量:
root@test 09:22:42>SHOW VARIABLES LIKE 'character_set%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | /u01/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)
MySQL修正collation变量:
root@test 07:46:23>SHOW VARIABLES LIKE 'collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci |
| collation_database | gbk_chinese_ci |
| collation_server | gbk_chinese_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)
下面示意图阐述从客户端到服务器,然后再到客户端所经历的编码转换过程。
query -> _client (客户端准备发送query到网络的编码)
| (network: client -> network)
\|/
_connection (写网络转化后的编码, 一般都会和client一致)
| (network -> server)
_server & collation_server (服务器转换后的编码)
| (server -> mysql server)
\|/
_database & collation_database (数据库转换后的编码)
| (mysql server)
\|/
_table/_filed ... (数据库内的编码转换)
| (mysql server)
\|/
_filesystem (文件系统层的编码)
\|/
_database (服务器数据库转换后的编码)
| (mysql server)
\|/
_results (查询结果集转化后的编码)
| (mysql server)
\|/
_connection (服务器发送前转化后的编码)
| (network sending)
\|/
result <- _client (客户端接受到结果集的编码)
下图是一手图:
常用的2条set命令有何具体的意义呢,如下解释下:
A SET NAMES 'x' 等效于下面三条语句:
SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
A SET CHARACTER SET 'x' 等效于下面三条语句:
SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;
好了,以上都是介绍编码的字符集,那么线上如何转化想要的字符集:
1. 按所需的字符集编码格式导出数据,然后按所需的字符集编码格式导入到数据库中。
这个是许多DBA推荐的方法。
2. 尝试在结果集/客户端转换,这个需要字符集之间兼容。
0 0
- MySQL字符集的那些事情: 设置及转换
- MySQL字符集设置及字符转换
- MySQL字符集设置及字符转换(latin1转utf8)
- MySQL字符集设置及字符转换(latin1转utf8)
- MySQL字符集设置及字符转换(latin1转utf8)
- MySQL字符集设置及字符转换(latin1转utf8)
- mysql字符集的转换
- MySQL字符集查看及设置
- mysql 字符集的设置
- MySQL字符集的设置
- MySQL字符集的设置
- MySQL- 字符集的设置
- mysql的字符集设置
- MySQL字符集及MySQL编码转换
- MySQL字符集及MySQL编码转换
- MySQL字符集及MySQL编码转换
- MySQL字符集及MySQL编码转换
- MySQL字符集及MySQL编码转换
- SecureCRT设置
- GC重新配置agent
- <context-param>与<init-param>的区别与作用
- qq登录后注销就无法再次登录
- Java中常用的加密方法(JDK)
- MySQL字符集的那些事情: 设置及转换
- sudo配置文件/etc/sudoers格式
- Linux用户组用户管理
- Spring的控制反转(IOC)和依赖注入(DI)详解
- 未能加载文件或程序集“System.EnterpriseServices 或它的某一个依赖项
- 【 D3.js 进阶系列 — 1.1 】 其他表格文件的读取
- MFC控件的不创建窗口也允许激活的选项查探
- android系统编译错误解决
- Android Svn中不需要上传的文件(可忽略的文件)