mysql latin1 也支持表情符号吗?

zhu*_*wei 6 mysql emoji

现在因为下面的现象我觉得我完全不理解字符集。起初我认为只有 utf8mb4 支持 Emoji 字符,例如。见下文:

As of MySQL 5.5.3, the utf8mb4 character set uses a maximum of four bytes per character supports supplemental characters
Run Code Online (Sandbox Code Playgroud)

但无意中我发现了这个现象,如下:

mysql> show variables like 'character%';
+--------------------------+---------------------------------------+
| Variable_name            | Value                                 |
+--------------------------+---------------------------------------+
| character_set_client     | latin1                                |
| character_set_connection | latin1                                |
| character_set_database   | latin1                                |
| character_set_filesystem | binary                                |
| character_set_results    | latin1                                |
| character_set_server     | utf8mb4                               |
| character_set_system     | utf8                                  |
| character_sets_dir       | /opt/mysql/server-5.6/share/charsets/ |
+--------------------------+---------------------------------------+
mysql> show create table t4\G
*************************** 1. row ***************************
   Table: t4
Create Table: CREATE TABLE `t4` (
  `data` varchar(100) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
mysql> insert into t4 select '\U+1F600';
mysql> select * from t4;
+------+
| data |
+------+
|      |
+------+
Run Code Online (Sandbox Code Playgroud)

现在我很困惑,看来latin1也可以支持表情符号字符。我知道这一定是幻觉,但我不知道如何消除?

frl*_*lan 0

您不能将除iso-8859-1 字符以外的任何字符存储到 latin1 字段中,而不将其转换为例如 base64

它可能会起作用,但稍后会在某个时候失败。特别是具有多字节字符,例如表情符号。