关于MySQL中默认字符集utf8和utf8mb4有关设置

关于MySQL中默认字符集utf8和utf8mb4有关设置

原因:UTF-8 编码是一种变长的编码机制,可以用1~4个字节存储字符。

因为历史遗留问题,MySQL 中的 utf8 编码并不是真正的 UTF-8,而是阉割版的,最长只有3个字节。当遇到占4个字节的 UTF-8 编码,例如 emoji 表情字符或者复杂的汉字,会导致存储异常。

解决:

1.查看默认字符集:

mysql> show variables like "%char%";

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

| character_set_client    | utf8                      |

| character_set_connection | utf8                      |

| character_set_database  | latin1                    |

| character_set_filesystem | binary                    |

| character_set_results    | utf8                      |

| character_set_server    | latin1                    |

| character_set_system    | utf8                      |

| character_sets_dir      | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

2.修改MySQL 的配置文件my.cnf(一般在服务器端,且修改多个文件,方法不建议采用)

3.创建数据库时指定字符集为 utf8mb4,作者本人喜欢使用:

CREATE DATABASE mydbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

备注:字符除了需要存储,还需要排序或比较大小。推荐用 utf8mb4_unicode_ci

你可能感兴趣的:(关于MySQL中默认字符集utf8和utf8mb4有关设置)