MySQL utf8与utf8mb4
type
status
date
slug
summary
tags
category
icon
password
utf8mb4
字符集具有以下特征:- 支持
BMP
(Basic Multilingual Plane
基本多语种平面 )和 补充字符(Supplementary Multilingual Plane
补充多语种平面)
- 每个多字节字符最多需要四个字节。
utf8mb4
与utf8mb3
字符集形成对比,后者只支持BMP
字符,每个字符最多使用三个字节
- 对于
BMP
字符,utf8mb4
和utf8mb3
具有相同的存储特征:相同的码值、相同的编码、相同的长度。
- 对于补充字符,
utf8mb4
需要4个字节来存储它,而utf8mb3
根本不能存储该字符。在将utf8mb3
列转换为utf8mb4
列时,不需要担心转换补充字符,因为没有补充字符。
utf8mb4
是utf8mb3
的超集,所以对于下面这样的连接操作,结果是字符集utf8mb4
和排序规则utf8mb4_col
:
结论:
数据库或者数据表的字段值由
utf8mb3
迁移到utf8mb4
,由于utf8mb4
和utf8mb3
具有相同的存储特征:相同的码值、相同的编码、相同的长度所以并不会出现乱码的问题。
处理方案:- 只更改目前发生影响的数据库字段列
- 这个生僻词库不符合要求,这些生僻字都是占用3个字节的生僻字,这里需要占用4个字节的生僻字可以用下面的脚本生成
- 修改目前发生影响的数据库表的字符集编码
Loading...