MySQL数据库之MySQL 支持utf8mb4
小标 2018-11-21 来源 : 阅读 1045 评论 0

摘要:本文主要向大家介绍了MySQL数据库之MySQL 支持utf8mb4 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之MySQL 支持utf8mb4 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

utf8mb4 utf8mb3 utf8

Refer to

The utf8mb4 Character Set

The utf8 Character Set (Alias for utf8mb3)


MySQL在 5.5.3 之后增加了 utf8mb4 字符编码,mb4即 most bytes 4。简单说 utf8mb4 是 utf8 的超集并完全兼容utf8,能够用四个字节存储更多的字符。

而utf8 是 utf8mb3 的别名。标准的 UTF-8 字符集编码是可以用 1~4 个字节去编码21位字符,但是MySQL其实实现的utf8只是使用3个字节而已, utf8mb4才是真正意义上的 utf8。

如果数据库表字段设置的字符集不是utf8mb4,却插入类似emjoy表情的时候:

严格模式 下会出现  Incorrect string value: /xF0/xA1/x8B/xBE/xE5/xA2… for column 'name' 这样的错误

非严格模式下此后的数据会被截断

排序字符集

Refer to:  Collation Naming Conventions

Suffix

Meaning

Remark

_ai    Accent insensitive    

_as    Accent sensitive    

_ci    Case insensitive    不分区大小写    

_cs    case-sensitive    区分大小写    

_bin    Binary    二进制存储,区分大小写    

utf8mb4_ unicode_ ci VS utf8mb4_ general_ ci

Refer to: What's the difference between utf8_general_ci and utf8_unicode_ci

utf8_general_ci校对速度快,但准确度稍差。

utf8_unicode_ci准确度高,但校对速度稍慢。

数据库一般默认选择 utf8mb4_general_ci ;
如果你的应用有德语、法语或者俄语,请一定使用utf8mb4_unicode_ci

配置

vim /etc/my.cnf

[client] 
default-character-set = utf8mb4 

[mysql] 
default-character-set = utf8mb4 

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

检查目前MySQL的字符集

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            || collation_connection     | utf8_general_ci |
| collation_database       | utf8_general_ci || collation_server         | utf8_general_ci |
+--------------------------+-----------------+
10 rows in set (0.00 sec)

总结

mysql 版本 5.5.3+

MySQL Connector/J Java驱动5.1.13+

/etc/my.cnf 配置中 添加配置,详见上面

排序字符集选用 utf8mb4_unicode_ci

列(字段)> 表 > 数据库

备注:
其实只要数据库支持utfbmb4(show char set),及时MySQL配置(/etc/my.cnf)中配置的默认字符集是utf8,也可以直接指定数据库、表、字段的字符集为utf8mb4,然后在连接的时候指定字符集为utf8mb4即可。
比如设置Java的连接参数中characterEncoding=utf8mb4

查看MySQL支持的字符集列表:



mysql-show-char-set.png

建议

数据库在设置字符集的时候,设置成utf8mb4格式!

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程