MySQL 编码问题
2022-04-07
MySQL
到底支持不支持 Emoji
?
可能有些人说支持,有些人说不支持。并且双方都能给出自己的亲身实践经验。😄😄
简单来说:支持,但是需要注意几个点:
- 数据库编码设置为
utf8mb4
; - 数据库连接编码设置为
utf8
; - 编程语言(
Python
、SQL
等)代码保存格式为utf8
。
第一点简单,网上教设置(吐槽)的文章很多,就不赘述了。
第二点,就是说从程序连接到 MySQL
时,需要显示的指明编码,比如 C#
的连接字符串:
1 | <add name="MySQLConnection" connectionString="server=xxxx;database=yyyy;uid=zzzz;pwd=your_password;charset=utf8" /> |
再比如 Python
的连接字符串(默认是 utf8mb4
):
1 | mysqlconn.connect(user=user,password=password,database=database,charset='utf8',connection_timeout=timeout) |
至于第三点,一般情况下,都不是问题,因为现代编程语言,基本默认都是存成 utf8
了。但是,当你卡壳了,记住,这一点也很重要!举个🌰:
在 MySQL Workbench 查询窗口中,我是用 ASCII
字符拼接,是可以正常返回的:
但当我尝试使用 Emoji
字符拼接时,它就不行了:
但是,其实你把同样的拼接语句,放在 Python
或者 C#
代码里直接运行,都是可以按照预期返回结果的(前提:正确配置连接编码)。
参考链接
本文链接:
content_copy https://zxs66.github.io/2022/04/07/mysql-charset-issue/