让MySql支持Emoji表情(MySQL中4字节utf8字符保存方法)

手机端插入Emoji表情,保存到数据库时报错:

Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x84' for column 'review' at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)

 

经检查原因:

UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方案:将Mysql的编码从utf8转换成utf8mb4。

 

1. 修改my.ini [mysqld] character-set-server=utf8mb4
2. 在Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。
3. 将已经建好的表也转换成utf8mb4 
命令:ALTER TABLE `TABLE_NAME` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; (将TABLE_NAME替换成你的表名) 4. 将需要使用emoji的字段设置类型为:
命令:ALTER TABLE `TABLE_NAME`MODIFY COLUMN `COLUMN_NAME` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

 

参考:

http://stackoverflow.com/questions/2108824/mysql-incorrect-string-value-error-when-save-unicode-string-in-django

http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-charsets.html

转载于:https://www.cnblogs.com/weenix/p/4029096.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何查看OpenCV源码

我们可以查看OpenCV这个库的源代码, 具体操作方法参考: http://blog.csdn.net/cwt19902010/article/details/70227193 https://blog.csdn.net/kaspar1992/article/details/53326431 - 我们在Microsoft Visual Studio中通过 “右键 ->查看定义” 只…

实例化Model的三种方式

转载于:https://www.cnblogs.com/toward-the-sun/p/4030010.html

安装Opencv3

要添加系统变量。高级系统设计->环境变量->path, 我的为D:\OpenCV341\OpencV_vs2013_x64\install\x64\vc12\bin; 注意install文件夹是cmake编译生成的工程文件夹中的。 参考博客:http://blog.csdn.net/jinian2614/article/details/78176704?lo…

人形机器人,穷途末路还是光明未来?

来源:任赜宇的知乎专栏摘要:今年 11 月初在北京召开的 IEEE/RAS Humanoids 会议中,作者去听了这样一个 Workshop: Humanoid Robotics: Dead-end or Bright Future? (人形机器人,末路还是光明的未来?) 再结合当前的形势…

进入opencv内部函数调试

主要问题参考:http://blog.csdn.net/daven172/article/details/45769129 这篇博客。 我们进入opencv内部函数进行调试,主要是设置断点,然后按下F11键,VS2013编译器会自动跳转到opencv内部的函数。 如果我们进入内部的函数&#xf…

javascript高级程序设计-Array迭代及归并

迭代方法 every() 如果该函数对每一项都返回true,则返回true,否则返回false。 var numbers [1,2,3,4,3,2,1]; var everyResult numbers.every(function(item,index,array){return (item > 2); }); alert(everyResult); //result为false some() 如…

全球自动驾驶政策概况及特征研究

来源:《中国信息通信研究院CAICT》近年来,美、欧、日等发达国家和地区将自动驾驶技术作为交通未来发展的重要方向,在技术研发、道路测试、标准法规、政策等方面为自动驾驶及其载体——智能网联汽车的发展提供政策支持,加快自动驾驶…

Android开发记录(转)

一、Android模拟器相关 1. Android模拟器安装 Market 模拟器默认没有安装 Market,看到网上有较为复杂的安装方法,也有1个简单的,试了简单的,在 Android2.2 模拟器下试过是OK的,简单的方法如下:1) 下载2个文…

高斯赛德尔迭代法

我们在求解矩阵时,有很多种方法,其中当矩阵是大型稀疏矩阵(矩阵中有大部分元素都为0)时,我们可以用迭代法求解。 关于该方法的思想和定义,请参考如下博客: http://www.doc88.com/p-6953977164…

中心化,去中心化?关乎互联网未来命运的重要选

作者:刘锋 计算机博士 《互联网进化论》作者前言:不知不觉互联网的未来发展出现了分歧,当Facebook、谷歌等互联网巨头越来越强大的时候,反弹的声音也越来越大,人类社会的有识之士希望解决这个问题,由此导致…

Arcgis for javascript不同的状态下自定义鼠标样式

俗话说:爱美之心,人皆有之。是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点。在本文,给大家讲讲在Arcgis for javascript下如何自定义鼠标样式。 首先,说几个状态。1、鼠标…

泊松融合

泊松融合是一种很重要的图像融合算法,该算法选自论文([Poisson Image Editing]2003年发表),关于算法中的很多基础概念可以参考如下博客: https://blog.csdn.net/hjimce/article/details/45716603 https://blog.csdn.…

Facebook :AI 年度总结来啦

来源:AI 科技评论摘要:最近,Facebook 做了一份 AI 年度总结,详述了他们过去一年在 AI 上所做的代表性工作。在 Facebook,我们认为,人工智能以更有效的新方式学习,就像人类一样,可以在…

select,epoll的比较

机制: select:只支持水平触发(数据不处理完无限通知) epoll:支持水平触发和边缘触发(仅通知一次) 单进程监控FD个数 select: 由FD_SETSIZE设置,默认值是2048。在大量连接的情况下明显不足。 epoll&#xff…

积分图像

积分图像的大小尺寸与原图像 I(x,y)的大小尺寸相等,而积分图像在(x,y)处的值等于原图像中横坐标小于等于x并且纵坐标也小于等于y的所有像素灰度值之和,也就是在原图像中,从其左上角到(x,y)处所构成的矩形区域内所有像素灰度值之和。

android如何与服务器交互?

问题描述是用httpclient 还是socket 还是webservice?倒底哪种好用,哪种最常用?有没有好的框架介绍一下?解决方案11.afinal2.volley个人觉得不错的两个框架!当然也可以自己封装。如果对以上两个框架感兴趣&#xff0c…

一文读懂可穿戴技术

来源:传感器技术可穿戴技术(wearable technology),最早是20世纪60年代由麻省理工学院媒体实验室提出的创新技术。利用该技术,可以把多媒体、传感器和无线通信等技术嵌入人们的衣物中,可支持手势和眼动操作等多种交互方式&#xff…

C++函数指针使用总结

一 函数指针介绍 函数指针指向某种特定类型,函数的类型由其参数及返回类型共同决定,与函数名无关。举例如下: int add(int nLeft,int nRight);//函数定义 该函数类型为int(int,int),要想声明一个指向该类函数的指针,只需用指…

使用异或运算交换两个任意类型变量

这篇文章中将使用C语言,实现交换两个任意类型变量的功能.说到任意类型用C让人感觉很难做,如果是C则使用模板函数就轻松搞定: template<class T> inline void swap(T& t1, T& t2) { T tmp; tmp t1; t1 t2; t2 tmp; } 先说下使用^来交换两个整数,其代码…

2019与下一个十年:我们将要放弃的和将要拥抱的

来源&#xff1a;资本实验室2019年&#xff0c;是连接21世纪前两个十年的过渡一年。在金融支付和商业领域中&#xff0c;2019年也有望成为激动人心的一年。在这一年中&#xff0c;每家企业、每个人都需要对过去十年中所追求的创新进行反思&#xff0c;并决定下一个十年前进的方…