作者 | _陈哈哈
来源 | blog.csdn.net/qq_39390545/article/details/106946166
发生背景
一、报错回顾
INSERT INTO `csjdemo`.`student` (`ID`, `NAME`, `SEX`, `AGE`, `CLASS`, `GRADE`, `HOBBY`)
VALUES ('20', '陈哈哈😓', '男', '20', '181班', '9年级', '看片儿');
[Err] 1366 - Incorrect string value: '\xF0\x9F\x98\x93' for column 'NAME' at row 1
INSERT INTO `student` (`ID`, `NAME`, `SEX`, `AGE`, `CLASS`, `GRADE`, `HOBBY`)
VALUES (null, '陈哈哈😓😓', '男', '20', '181班', '9年级', '看片儿');
二、MySQL中utf8的趣事
在MySQL中,“utf8”编码只支持每个字符最多三个字节,而真正的 UTF-8 是每个字符最多四个字节。
1. utf8mb4 才是真正的UTF-8
计算机读取“01000011”,得到数字 67,因为 67 被编码成“01000011”。
计算机在 Unicode 字符集中查找 67,找到了“C”。
我的电脑将“C”映射成 Unicode 字符集中的 67。
我的电脑将 67 编码成“01000011”,并发送给 Web 服务器。
2. utf8 的简史
使用 CHAR 定义列(在现在看来,CHAR 已经是老古董了,但在那时,在 MySQL 中使用 CHAR 会更快,不过从 2005 年以后就不是这样子了)。
将 CHAR 列的编码设置为“utf8”。
三、总结
往 期 推 荐 1、Intellij IDEA这样 配置注释模板,让你瞬间高出一个逼格! 2、吊炸天的 Docker 图形化工具 Portainer,必须推荐给你! 3、最牛逼的 Java 日志框架,性能无敌,横扫所有对手! 4、把Redis当作队列来用,真的合适吗? 5、惊呆了,Spring Boot居然这么耗内存!你知道吗? 6、全网最全 Java 日志框架适配方案!还有谁不会? 7、Spring中毒太深,离开Spring我居然连最基本的接口都不会写了
点分享
点收藏
点点赞
点在看