在mysql中存在着各种utf8编码格式,如下表:

1)utf8_bin

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。

2)utf8_general_ci

utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

3)utf8_general_cs

utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

从MySQL 5.5.3 开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,所以能支持更多的字符集。

utf8mb4兼容utf8,且比utf8能表示更多的字符。

用户在文本的区域输入emoji表情,如果不做一定处理,就会导致插入数据库异常。

即使这样在我在sqlyog插入emoji字符”🔌“还会提示”Incorrect string value: '\xF0\x9F\x94\x8C' for column 'username' at row 1“,

这是因为客户端发送的是utf8,但是服务器会把它当做utf8处理,如果是汉字的话,肯定会出现乱码的问题 ,

set character_set_client = utf8mb4;

set character_set_server = utf8mb4;

set character_set_connection = utf8mb4;

set character_set_database = utf8mb4;

set character_set_results = utf8mb4;

set collation_connection = utf8mb4_general_ci;

set collation_database = utf8mb4_general_ci;

set collation_server = utf8mb4_general_ci;


一个汉字占多少长度与编码有关:

UTF-8:一个汉字 = 3个字节,英文是一个字节

GBK: 一个汉字 = 2个字节,英文是一个字节