mysql 如何存储 emoji

之前我也遇到这样的问题,具体原因是因为emoji表情大小为四个字节,但一般的utf8编码下的mysql只能存储2到3个字节,具体的解决办法是把要存储的emoji表情的那个字段类型改为longtext,要是不行把utf8编码改为utf8mb4

我当时好像就是这么解决的,你试试

1、桌面上右击 计算机,选择“管理”, 选择“服务和应用程序”---“服务”, 在里面找到MySQL56的服务。

2、右击 MySQL服务,查看“属性”:往后拖一下,找到—default-file下图中画框部分,这里指明了MySQL启动的时候要加载的配置文件.

3、 找到该路径下的配置文件,进行修改。

4、 具体修改内容:

文字:

[client]

port=3306

default-character-set=utf8mb4

[mysql]

port=3306

default-character-set=utf8mb4

[mysqld]

port=3306

character-set-client-handshake= FALSE

character-set-server= utf8mb4

collation-server= utf8mb4_unicode_ci

init_connect='SET NAMES utf8mb4'

5、 然后重启MySQL56服务。

6、 在运行里面,找到并打开mysql command line,使用以下命令查看是否生效。

SHOWVARIABLES WHERE Variable_name LIKE 'character/_set/_%' OR Variable_name LIKE'collation%'

看到下面这个画面就说明生效了:

7、以为这样就完了吗?No,即使是这样我们无论是在mysql workbench还是通过python+mysqldb建立的utf8mb4数据库其实还是utf-8的,也正因如此,我们的emoj字符才一直不能插入到数据库中。

即使建立的数据库是utf8mb4的,我们看到这个数据库还是utf8的。

所以我们还需要继续实验,仔细看修改配置文件里面有一句:init_connect='SETNAMES utf8mb4',那我可以拿来用到数据库中。

果然,发现加上“SET NAMES utf8mb4”这句以后,数据库变成了utf8mb4.:

MySQL 5.5.3之前的版本utf8最多只能存储三个字节,不能支持emoji表情,需要用MySQL 5.5.3或者以上的版本才可以,字符集用utf8mb4,见http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-upgrading.html

MySQL Connector必须选择MySQL Connector/J 5.1.13的版本(目前我们用这个)才可以支持字符集utf8mb4


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7568764.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存