mysql修改utf8mb4编码集

mysql utf8 是最多支持3个字节、utf8mb4 最多支持4个字节、emoji表情是四个字节,如果使用utf8编码会导致异常

java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1  

一、查看数据库版本以及编码(mysql从5.5.3开始支持utf8mb4)

mysql> select version();
+------------+
| version()  |
+------------+
| 5.7.22-log |
+------------+

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+----------------------------------------------------
-----+
| 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       | C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
| collation_connection     | utf8_general_ci
     |
| collation_database       | utf8_general_ci
     |
| collation_server         | utf8_general_ci
     |
+--------------------------+---------------------------

二、修改linux my.cnf文件(window my.ini)

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
init_connect='SET collation_connection = utf8mb4_general_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
skip-character-set-client-handshake

*注意:
在 mysqld 中使用 default-character-set 设置, mysql 启动会报错而无法启动。

说明
关于utf8字符集,我们国内默认选择:utf8mb4_general_ci而不是utf8_unicode_ci,
区别在于字符对比上
请看mysql上面的例子:
对与general来说 ß = s 是为true的
但是对于unicode来说 ß = ss 才是为true的,
其实他们的差别主要在德语和法语上,所以对于我们中国人来说,一般使用general,因为general更快
如果你对德语和法语的对比有更高的要求,才使用unicode,它比general更准确一些(按照德语和法语的标准来说,在对比或者排序上更准确)
看看这个文档:http://dev.mysql.com/doc/refman/5.7/en/charset-unicode-sets.html
另外还有utf8_bin_ci也是比较常用的哦,在字符对比时,unicode和general都不是大小写敏感的,所以如果要求大小写敏感的话,就使用bin

三、重启mysql服务,查看编码是否生效

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+-------------------------------------------------
-----+
| 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       | C:\Program Files\MySQL\MySQL Server 5.7\share\chets\ |
| collation_connection     | utf8mb4_general_ci
     |
| collation_database       | utf8mb4_general_ci
     |
| collation_server         | utf8mb4_general_ci
     |
+--------------------------+-------------------------------------------------
-----+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

到此说明已经配置成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值