mysql : utf8mb4 的问题

微信呢称和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 去掉

时间: 2024-10-25 13:30:14

mysql : utf8mb4 的问题的相关文章

MySQL utf8mb4 字符集:支持 emoji 表情符号

我用他的方法解决了问题,亲测可用,不要用Navicat for Mysql去查询编码,在服务器中以root命令进入mysql,用show variables like 'char%';命令查询的编码才是最准确的. ㈠ 序言 为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题. 涉及无线相关的 MySQL 数据库建议都提前采用 utf8mb4 字符集 这必须要作为移动互联网行业的一个技术选型的要点 ㈡ 限制 需要 >= MySQL 5.5.3版本.从库也必须是5.5的了.低版本不

utf-8-求助啊``mysql_query(&amp;amp;#39;set names utf8&amp;amp;#39;);字符集乱码问号``

问题描述 求助啊``mysql_query('set names utf8');字符集乱码问号`` ``phpmyadmin下字符集乱码和问号,在下已血崩,网上查了很多方法,试过在编译器下添加header("Content-type:text/html;charset=utf-8"); page laguage='php' pageEncoding='utf-8'); 也试过mysql_query('set names utf8'); Mysql配置文件my.ini也设置了默认编码格式

导入MySQL数据库提示&quot;Unknown character set: &#039;utf8mb4&#039;&quot;错误

今天老左在准备迁移公司一个客户的网站到另外一台服务器中,根据正常的操作备份最新的网页文件和导出数据库,然后在新服务器中创建站点和数据库wget迁移进去解压.因为数据库比较小,所以直接用PHPMyAdmin工具在线导入,但是看到有错误提示"#1115 - Unknown character set: 'utf8mb4'".   第一.错误提示     看来是因为数据库版本的问题导致的,我看到之前网站MYSQL5.1版本,现在是MYSQL5.5版本,从5.5开始采用的是utf8mb4,而我

MySQL乱码问题以及utf8mb4字符集

乱码 推荐大家看 深入MySQL字符集设置 ,区分检查client端.server端的编码:最简单暴力的方式,是在所有的环节都显式明确的指定相同的编码. 比如使用python的MySQLdb连接MySQL时默认的charset是latin1,需要自己指定charset='utf8′,即使是在服务器端的init-connect='SET NAMES utf8′,MySQLdb也会使用latin1覆盖该选项:可以参照这篇文章: emoji表情与utf8mb4 关于emoji表情的话mysql的utf

mysql中字符集 utf8 和utf8mb4 有什么区别?

可以简单的理解 utf8mb4 是目前最大的一个字符编码,支持任意文字. 为什么会有UTF8MB4? 既然utf8应付日常使用完全没有问题,那为什么还要使用utf8mb4呢? 低版本的MySQL支持的utf8编码,最大字符长度为 3 字节,如果遇到 4 字节的字符就会出现错误了.三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xFFFF,也就是 Unicode 中的基本多文平面(BMP).也就是说,任何不在基本多文平面的 Unicode字符,都无法使用MySQL原有的 utf8

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情

RDS for MySQL 使用 utf8mb4 字符集存储 emoji 表情 1. 基本原则 2. 三个条件的说明 2.1 应用客户端 2.2 应用到 RDS MySQL 实例的连接 2.3 RDS 实例配置 3. 通过 set names 命令设置会话字符集 1. 基本原则 如果要实现存储 emoji 表情到 RDS for MySQL 实例,需要应用客户端.到 RDS for MySQL 实例的连接.RDS 实例内部 3 个方面统一使用或者支持 utf8mb4 字符集. 注:关于 utf8

更改MySQL数据库的编码为utf8mb4

CREATE DATABASE `test` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ; mysql> create database daily default character set utf8mb4 collate utf8mb4_unicode_ci; 原文:http://blog.csdn.net/woslx/article/details/49685111 utf-8编码可能2个字节.3个字节.4个字节的字符

mysql 中 utf-8mb4 是什么格式的编码

问题描述 mysql 中 utf-8mb4 是什么格式的编码 如题. 解决方案 修改mysql编码为utf-8mb4MySQL字符编码:如何从utf8升级到utf8mb4utf8 mb4 解决方案二: http://m.linuxidc.com/?src=http://www.linuxidc.com/Linux/2014-07/104231.htm 占4个字节的utf8编码 解决方案三: 主要是支持表情字符.比如说QQ里面你打"笑"的那个表情.

升级 MySql 支持 emoji 表情 与 utf8mb4

2016-10-27:如果一切该设置都设置了还是无效的话,试试在 mysql 链接字符串里面去掉 charset 参数!如下: url=jdbc\:mysql\://42.xx.xx.4\:7306/abc_test2?useUnicode\=true 有童鞋对 Emoji 表情认知不深,对使用 Emoji 抵制,也不愿意去百度,所以有必要先科普下. Emoji 表情是字符不是图片,如果客户端.数据库不支持就升级一下,浏览器也是. 既然是字符,那可不可人工处理替换掉?可以是可以但是不建議.其实升