到底是谁将Emoji字符转化为字面值(\U+xxxxx),操作系统(OS)还是Mysql客户端程序?

当我从网页中复制一个Emoji字符到Mysql的交互界面中,它会自动被转为字符串字面值,如下所示:
图片描述

当我将其复制到终端界面中时,就没有转化,原样显式,如下所示:
图片描述

我想问同样的一个操作系统,为什么在Mysql交互界面中就被自动转化为\U+1F600,而在普通终端界面中就不会转化? 难道这个转化是由Mysql客户端程序完成的吗?

阅读 4.3k
1 个回答

深入mysql字符集设置

  1. MySQL Server收到请求时将请求数据从character_set_client转换为character_set_connection;
  2. 进行内部操作前将请求数据从character_set_connection转换为内部操作字符集,其确定方法如下:
    • 使用每个数据字段的CHARACTER SET设定值;
    • 若上述值不存在,则使用对应数据表的DEFAULT CHARACTER SET设定值(MySQL扩展,非SQL标准);
    • 若上述值不存在,则使用对应数据库的DEFAULT CHARACTER SET设定值;
    • 若上述值不存在,则使用character_set_server设定值。
  3. 将操作结果从内部操作字符集转换为character_set_results。

这里有一篇文章:mysql utf8mb4与emoji表情

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题