当前位置:首页 > MySQL

mysql : utf8mb4 的问题

canca11年前 (2016-01-20)MySQL970

微信呢称和QQ呢称上有很多火星文和emoji表情图片,这些数据,如果直接insert到mysql数据库,一般会报错,设置成utf8都不好使,必须改成utf8mb4编码,这二者的区别见: mysql utf8mb4与emoji表情 ,网上的解决办法大多是修改my.cnf参数,设置mysql的编码为utf8mb4,这种方法虽然彻底,但是通常要重启mysql,会造成生产系统临时当机。

下面是影响相对更小的处理方法:

前提:mysql的版本不能太低,低于5.5.3的版本不支持utf8mb4编码。

将表中的对应字段,比如会员表的呢称字段,其字符集修改成utf8mb4。

然后在java客户端,将mysql-connector-java升级成最新版(目前最新版是5.1.37),最后修改druid数据源的配置,增加一行:

<property name="connectionInitSqls" value="set names utf8mb4;"/>

完整配置参考下面:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc-driver}"/>
<property name="url" value="${jdbc-url}"/>
<property name="username" value="${jdbc-user}"/>
<property name="password" value="${jdbc-password}"/>
<property name="filters" value="stat"/>
<property name="maxActive" value="20"/>
<property name="initialSize" value="1"/>
<property name="maxWait" value="60000"/>
<property name="minIdle" value="1"/>
<property name="timeBetweenEvictionRunsMillis" value="3000"/>
<property name="minEvictableIdleTimeMillis" value="300000"/>
<property name="validationQuery" value="SELECT 'x'"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="false"/>
<property name="testOnReturn" value="false"/>
<property name="poolPreparedStatements" value="true"/>
<property name="maxPoolPreparedStatementPerConnectionSize" value="20"/>
<property name="connectionInitSqls" value="set names utf8mb4;"/>
</bean>

基本上应该就可以了,如果还不行,检查下jdbc连接串的设置:

jdbc:mysql://localhost:3306/db名称?useUnicode=true&characterEncoding=utf8

再不行的话,把最后的?useUnicode=true&characterEncoding=utf8 去掉

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/75.html

标签: MySQL
分享给朋友:

“mysql : utf8mb4 的问题” 的相关文章

mysql 配置命令大全

--auto-rehash       Enable automatic rehashing. One doesn't need to use             …

MySql导入SQL文件

MySql导入SQL文件: mysql -u root -p <c:\sampledb.sql…

MySQL免安装配置方法

1.下载一个安装版的。 安装版,安装后%MYSQL_HOME%\bin下有一个mysqld-nt.exe文件。将它复制出来(珍藏起来)。 2.下载一个免安装版MSYQL 将它解压。例如:E:/mysql-6.0.3-alpha-win32 将my-huge.ini另存为my.ini。 打开my.in…

MySQL数据库备份与还原

MySQL数据库备份与还原

       平时工作中常常会遇到数据库备份、还原等场景,但有些服务器上不允许装前台工具,只好用命令行来操作。并且更重要的一点是:如果数据量比较大的话,借助工具来操作会非常卡,而使用命令行则无压力...…

sql语句查询经纬度范围

sql语句查询经纬度范围

指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据。 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude为数据表纬度字段 SQL在mysql下测…

mysql utf8mb4与emoji表情

mysql utf8mb4与emoji表情

MYSQL 5.5 之前, UTF8 编码只支持1-3个字节,只支持BMP这部分的unicode编码区, BMP是从哪到哪,到http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters这里看,基本就是0000~FFFF这一区。 从MYSQL5…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。