发布网友 发布时间:2022-05-08 01:13
共8个回答
懂视网 时间:2022-05-08 05:34
普通字符最多占用3个字节,使用utf8足够。而emoji表情字符占用4个字节,需要使用utf8mb4字符集存储。解决需要在两个地方做修改:MySQL服务器端和连接的客户端。
MySQL服务器端
之前给大家介绍过使MySQL能够存储emoji表情字符的设置教程,想进一步了解的朋友可以先看一看。
在服务器端把需要存储表情emoji字符的字段改用utf8mb4字符集:
ALTER TABLE mytable MODIFY COLUMN myfiled varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
客户端
客户端需要把连接的字符集设定为utf8mb4。
设置如下:
set names utf8mb4;
使用的是阿里开源的druid datasource,它有一个属性connectionInitSqls,它用来设置物理连接初始化的时候执行的sql。所以我们可以使用connectionInitSqls来初始化连接。
Spring配置如下:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 基本属性 url、user、password --> <property name="url" value="jdbc:mysql://localhost:3888/majing?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull" /> <property name="username" value="dbusername"/> <property name="password" value="dbpasswod"/> <property name="connectionInitSqls" value="set names utf8mb4;" /> <!-- 其他配置 --> </bean>
其他的数据库连接池如dbcp2,HikariCP都有connectionInitSqls属性。
总结
热心网友 时间:2022-05-08 02:42
可能是你那个mysql和你的程序兼容不是很好,干脆装一个其它版本的mysql。再试试楼上的方法。祝你成功!热心网友 时间:2022-05-08 04:00
刚刚解决一系列mysql 乱码问题 需要帮助的 +QQ 114145077热心网友 时间:2022-05-08 05:35
找到my.ini热心网友 时间:2022-05-08 07:26
MYSQL不支持这种转义:\xE4\xB8\x9A\xE5\x8A\xA1热心网友 时间:2022-05-08 09:34
安装MYSQL时编码设置不对,重新安装MYSQL很麻烦,但只能重新安装热心网友 时间:2022-05-08 11:59
能详细一点吗??什么地方的乱码啊??估计最大可能是字符集不匹配吧。。热心网友 时间:2022-05-08 17:38
建议重装一下MYSQL,编码设置为UTF-8