关闭

mysql utf8mb4编码设置

270人阅读 评论(0) 收藏 举报
分类:

1.字符集及字符集校对规则说明:

  字符集(CharacterSet)和校对规则(Collation)。
  字符集和校对规则有4个级别的默认设置:服务器(server),数据库(database),数据表(table)和连接(connection)。
  MySQL中是根据下面几个变量确定服务器端和客户端用的什么字符集:
  character_set_client    客户端字符集
  character_set_connection  客户端与服务器端连接采用的字符集
  character_set_results    SELECT查询返回数据的字符集
  character_set_system       
  character_set_database   数据库采用的字符集


2.MySQL的字符集处理规则:
发送请求:
  1)客户端发送请求到服务器端。
  2)服务器端会把请求的数据从客户端字符集(character_set_client)转成服务器连接字符集(character_set_connection)。
  3)然後服务器会检测存储区域(table,column)的字符集,然后把数据从连接字符集(character_set_connection)转为存储区域(table,column)的字符集,然後再存储或者查询。
返回请求:
  1)服务器将存储区域(table,column)的字符集转换成服务器连接字符集(character_set_connection)。
  2)将服务器连接字符集(character_set_connection)转换成结果字符集(character_set_results),再发送到客户端。
 
3.查看和修改字符集编码及校对规则:
  1)查看:
root@localhost : (none) 09:40:20> show variables like 'character%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | utf8                             |
| character_set_connection | utf8                             |
| character_set_database   | utf8                             |
| character_set_filesystem | binary                           |
| character_set_results    | utf8                             |
| character_set_server     | utf8                             |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------------+


mysql> show variables like 'collation_%';  
 +----------------------+-----------------+  
 | Variable_name         | Value            |  
 +-----------------------+-----------------+  
 | collation_connection  | utf8_general_ci |  
 | collation_database    | utf8_general_ci |  
 | collation_server      | utf8_general_ci |  
 +----------------------+-----------------+  
 
  2)修改默认字符集方法:
修改/etc/my.cnf文件中的相关参数,并重启动数据库;
[client]
loose_default-character-set=utf8mb4
[mysqld]
default-character-set=utf8mb4
character_set_server=utf8mb4
collation=utf8mb4_general_ci
[mysqldump]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4


  3)验证修改后是否生效规则:
mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
 
4.set names的作用
set names实际上就是同时设置了character_set_client,character_set_connection,character_set_results这三个系统变量。
如在mysql命令行上输入 set names 'utf8mb4' 命令等同于:
SET character_set_client = utf8mb4;  
SET character_set_connection = utf8mb4;  
SET character_set_results = utf8mb4;  


5.总结:总结为以下四点:
  1)要保证数据库中存的数据与数据库编码一致,即数据编码与character_set_database一致。
  2)要保证通讯的字符集与数据库的字符集一致,即character_set_client,character_set_connection与character_set_database一致。
  3)要保证SELECT的返回与程序的编码一致,即character_set_results与程序编码一致。
  4)要保证程序编码与浏览器编码一致,即程序编码与<meta http-equiv="Content-Type" content="text/html; charset=?" />一致。


6.其他说明:
 1)支持utf8mb4的mysql版本:mysql5.3
 2)支持utf8mb4的jdbc版本:5.1.31


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:120148次
    • 积分:2253
    • 等级:
    • 排名:第16698名
    • 原创:100篇
    • 转载:75篇
    • 译文:0篇
    • 评论:3条