旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

为何不要在MySQL中运用UTF-8编码体式格局【MySQL教程】,mysql,utf-8

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:56评论:0


导读:MySQL的UTF-8编码体式格局MySQL从4.1版本最先支撑UTF-8,也就是2003年,然则现在盛行的UTF-8规范(RFC3629)是在...

MySQL的UTF-8编码体式格局

MySQL 从 4.1 版本最先支撑 UTF-8,也就是 2003 年,然则现在盛行的UTF-8 规范(RFC 3629)是在此之后划定的。正因而,才作育了MySQL中的UTF-8与我们一样平常开辟中的UTF-8不一致,从到致使了些题目。MySQL的UTF-8只支撑每一个字符最多三个字节,而真正的 UTF-8 是每一个字符最多四个字节。

题目复现

有数据库表以下:utf8编码体式格局

往数据库存一条纪录:

@Test public void testInsert() {     User user = new User();     user.setUsername("\uD83D\uDE00 ");     user.setPassword("123456");     userRepo.save(user); }

这里只是部份代码,看不懂没紧要,这里是给user表插进去一条纪录。个中username是\uD83D\uDE00 。

实在\uD83D\uDE00是一个emoji脸色。

由于MySQL中utf8字符集只支撑三字节UTF-8编码的Unicode局限,而emoji字符属于四字节编码部份,所以顺序运转预期是会报错的。运转这段代码:

与预期一致,报错了。

处理题目

虽然MySQL的UTF-8存在缺点,然则MySQL(包含mariadb)官方却没有修复此bug,而是经由过程2010年从新宣布的“utf8mb4”来支撑真正的 UTF-8。因而想要处理此题目,只可以将MySQL数据库设置为utf8mb4字符集才行。

总结

这个题目,也是由于某次保留数据的时刻保留了一个emoji脸色才发明的。实在最早最先用MySQL的时刻,就有发明一个utf8mb4了,然则本身却没有却去相识UTF8和UTF8MB4的区分。经由过程此次经验,今后运用MySQL就老老实实的设置字符集为utf8mb4吧。

更多MySQL相干技术文章,请接见MySQL教程栏目举行进修!

以上就是为何不要在MySQL中运用UTF-8编码体式格局的细致内容,更多请关注ki4网别的相干文章!

标签:mysqlutf-8


欢迎 发表评论: