mysql latin1也能支持中文和Emoji字符吗?
mysql中latin1怎么也能保存中文与Emoji字符呢?如下所示:
bash
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> insert into t4 select '你';
因segmentfault不支持Emoji字符,只好截图了
在我的印象中只有utf8mb4才支持Emoji字符以及中文也得需要utf8啊,怎么现在连latin1就能搞定.是我的错觉吗?
DJ.kon
10 years, 1 month ago
Answers
- MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
- 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
• 使用每个数据字段的CHARACTER SET设定值;
• 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
• 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
• 若上述值不存在,则使用character_set_server设定值。- 将操作结果从内部操作字符集转换为character_set_results。
这里有一篇文章: mysql utf8mb4与emoji表情
半人半灵的庭师
answered 10 years, 1 month ago