Mysql入库不了表情符号怎么办
目录
前言
异常信息:
主要原因是
解决办法
前言
异常信息:
### The error occurred while setting parameters ### SQL: INSERT INTO news_info ( id, title, content, author, summary, sensitives, scraping_time, level, news_type, content_text, original_columns, content_words ) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
### Cause: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x89' for column 'author' at row 1 ;
uncategorized SQLException; SQL state [HY000];
error code [1366];
Incorrect string value: '\xF0\x9F\x91\x89' for column 'author' at row 1;
nested exception is java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x89' for column 'author' at row 1 at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:89)
主要原因是
author 含有表情符号,表情是4字符,如果Mysql建库建表的时候没有声明是4字节,那么是在insert的时候会报错的!
解决办法
需要在消费入库的时候进行author转换成正常的二进制,二字符的汉字,也就是剔除四字节的表情;
String author= ContentUtils.filterOffUtf8Mb(newsInfo.getAuthor()); newsInfo.setAuthor(author);
主要得工具类代码
/*** 主要功能是做表情包剔除工具类* @param text* @return*/public static String filterOffUtf8Mb(String text) {if (StringUtils.isBlank(text)) {return text;}String result = text;try {byte[] bytes = text.getBytes(UTF_CHARACTOR);ByteBuffer buffer = ByteBuffer.allocate(bytes.length);int i = 0;while (i < bytes.length) {short b = bytes[i];if (b > 0) {buffer.put(bytes[i++]);continue;}// 去掉符号位b += 256;if (((b >> 5) ^ 0x06) == 0) {buffer.put(bytes, i, 2);i += 2;} else if (((b >> 4) ^ 0x0E) == 0) {buffer.put(bytes, i, 3);i += 3;} else if (((b >> 3) ^ 0x1E) == 0) {i += 4;} else if (((b >> 2) ^ 0xBE) == 0) {i += 5;} else {i += 6;}}buffer.flip();result = new String(buffer.array(), UTF_CHARACTOR);} catch (Exception ex) {log.error("内容过滤4字节字符出现错误" + ex.getMessage());}return result;}
Mysql入库不了表情符号怎么办相关推荐
- mysql 入库乱码,如何解决mysql中文入库乱码问题
如何解决mysql中文入库乱码问题 1. mysql 入库乱码问题 解决办法 首先 安装的时候必须选择utf-8字符集 如果不是可以进行再次配置或者设置相关变量 (可以用 SHOW VARIABLES ...
- 火车头采集发布到mysql_[火车头教程]火车头采集:mysql入库模板的编写数据库发布模块编辑器...
现在很多程序都无法用post发布,最好的解决方式就是用mysql入库去发布,但是这个发布模块编写很多人不熟悉,雨过天晴工作室这里给大家一个教程,如果你不会可以联系客服定制! 我们要把采集的数据发布到自 ...
- 解决mysql存储特殊文字(表情符号)utf8mb4
一.背景 爬取数据过程中,会遇到一些特殊的字符入库出错的问题,比如二进制数据.比如特殊文字(类似QQ表情)等. Siberian Husky fighting 这样的标题,后面就带有一个表情. 在my ...
- 在mysql中怎么存储表情符号_Emoji表情符号在MySQL数据库中的存储
在Android手机或者iPhone的各种输入法键盘中,会自带一些Emoji表情符号,如IPhone手机系统键盘包含的表情符号有: IPhone Emoji.png 如果在移动端发布文本内容时包含了这 ...
- php 表情字符入库,包含emoji表情符号的微信昵称入库失败解决方案
包含emoji表情符号的微信昵称入库失败解决方案作者:曾 彬 这里提供2个方法,处理微信emoji表情,方便入库和提取使用 你可以添加至项目的common中,便可以全局使用了 1.入库前,将emoji ...
- php mysql 表情录入_Emoji表情符号录入MySQL数据库报错的解决方案
mysql> 2,先去修改表字段字符集为utf8mb4: ALTER TABLE UGC_REVIEW_CONTENT MODIFY `CONTENT` TEXT CHARACTER SET u ...
- nagios mysql入库_使用NDOUtils将Nagios监控信息存入Mysql
官方的一些简介: NDOUtilsest un addon pour. Il permet de stocker dans une base de donnéesou dans un fichier ...
- mysql入库出库触发器_入库出库后库存自动更新的SQL触发器语句是什么?
tb1(产品表)cpidcpnamecpcolorkucun1xxxxxx82xxxxxx7=================================tb2(入库表)riqirukucpid2 ...
- mysql入库出库触发器_oracle 触发器 实现出入库
用语言实现 好处: 1.可以减少对数据库的访问. 2.可移植性好. 坏处: 1.操作起来考虑的东西较多,修改一处就要修改别一处.也就是说是相互关联的.如果少改了某一处,很可能使数据不一致. 用触发器实 ...
最新文章
- Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN
- Bootstrap简介及Bootstrap里的栅格系统col-md/sm/xs-x;
- Linux有趣指令(一)
- 接口传值后不起作用_前端工程师吐后端工程师(第八讲)——接口的开发
- ZOJ 1234 UVA 10271 Chopsticks
- 【干货】华为-智能世界2030:构建万物互联的智能世界
- UVa 1252 (状压DP + 记忆化搜索) Twenty Questions
- python中os模块作用
- MacOS Big Sur 11.2.1 (20D75) 纯净恢复版黑苹果镜像下载
- layui上传多张图片
- 阿里巴巴国际站详情页怎么装修热点链接一张图片多个链接代码询盘链接和客服代码制作教程装修代码
- python线程池学习
- 【kali】一款黑客们都在使用的操作系统
- Tilemap瓦片资源
- html简单的任务管理系统实现,用Javascript实现Windows任务管理器的代码
- 安装不了opencv
- java学习中,DVD管理系统纯代码(java 学习中的小记录)
- linux手机+华为,基于Linux打造,华为重磅宣布,开始在6款手机测试新系统
- android 9华为p20,华为P20PRO升级EMUI9.0(安卓9.0)的一些感受
- IPTV技术研究及应用
热门文章
- html 内容不换行,html标题不换行 html 什么代码可以不换行
- CMD删除指定文件夹
- IM,小视频, 直播 几大云平台对比选择
- java技能框架有哪些,详细说明
- android ios 网页 跳转QQ群
- PMD (别向报信者开火)
- CTSC1999/wiki1034 家园 题解 网络流+相对论
- win10c语言表白怎么做,火热的程序员表白方式,调皮弹窗表白代码,赶紧拿去试试吧...
- linux madplay运行完成,linux:如何利用源码安装madplay
- Django 前后端分离实战项目 生鲜超市(十四)之支付宝接入