Mysql插入数据报错java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…'[通俗易懂]

Mysql插入数据报错java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…'[通俗易懂]前几日在项目中遇到数据库插入数据报错java.sql.SQLException:Incorrectstringvalue:’\xF0\x9F\x98\x8D\xE8\xBE…’forcolumn’title’atrow1一直以为是中文字符编码不对,然后找了各种编码的东西。后来无意中发现了一篇文章:http://blog.csdn.net/fuxuejun/a

大家好,又见面了,我是你们的朋友全栈君。

前几日在项目中遇到数据库插入数据报错

java.sql.SQLException: Incorrect string value: ‘\xF0\x9F\x98\x8D\xE8\xBE…’ for column ‘title’ at row 1

一直以为是中文字符编码不对,然后找了各种编码的东西。后来无意中发现了一篇文章:

http://blog.csdn.net/fuxuejun/article/details/20361669


其中指出了该种字符串为Emoj表情内容,每个字符占用4个字节,在Mysql中默认最大支持3个字节,超长了,所以报错了。


解决办法:

(1)在较新版本的Mysql上可选择修改数据库类型,满足编码需求,可参考上述链接中的内容。

(2)过滤掉Emoj表情相关字符,因为我这边不需要保留Emoj表情,不需要复原显示,所以我选择了简单的方式,过滤字符。


代码如下:

/**
  * 将emoji表情替换成空串
  *  
  * @param source
  * @return 过滤后的字符串
  */
 public static String filterEmoji(String source) {
  if (source != null && source.length() > 0) {
   return source.replaceAll("[\ud800\udc00-\udbff\udfff\ud800-\udfff]", "");
  } else {
   return source;
  }
 }</span></span>


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143787.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月20日 下午8:20
下一篇 2022年5月20日 下午8:40


相关推荐

  • leetcode最长回文子串_kmp算法题

    leetcode最长回文子串_kmp算法题实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -1说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题

    2022年8月8日
    9
  • android之switch控件的用法

    在做一个蓝牙开关时候,用到了switch,记一下用法,其实跟Button是几乎一样的.布局中:<Switch android:id=”@+id/open” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android…

    2022年3月10日
    46
  • java queryinterface_COM编程中的接口查询QueryInterface的实现原理

    java queryinterface_COM编程中的接口查询QueryInterface的实现原理我们都知道,COM组件编程中,QueryInterface实现的接口之间的查询,通过这个接口,我们可以获取该组件中其他的接口。但是,QueryInterface实现的原理,并不是大家都很清楚,也没有哪本书仔细讲了这点。我将个人心得写下来,供有需要的人查看。首先,我们看一下基本的COM实现。一般来说,COM是通过多继承实现多个接口,如下图而对应的QueryInterface实现如下HRESULT…

    2022年7月22日
    13
  • MFC进度条-转

    MFC进度条-转CProgressCtrl 控件属性当我们在处理大程序时,常常需要耗很长时间(比如搜索内存,复制大文件),为了不让用户错误的认为系统已经死机,我们要给程序添加进度条。CProgressC

    2022年6月30日
    30
  • loc和iloc的用法和区别

    loc和iloc的用法和区别loc 通过行标签索引行数据 iloc 通过行号索引行数据 ix 通过行标签或者行号索引行数据 基于 loc 和 iloc 的混合 标签切片 如 a c 与序列切片如 0 2 不同 后者不包含 index 2 的元素 前者包含结束标签 c 所在的行 布尔类型数组作为标签 例如 True False 等价于 a c 1 locimportnum

    2026年3月26日
    2
  • sql 时间转换问题 from_unixtime() UNIX_TIMESTAMP()「建议收藏」

    sql 时间转换问题 from_unixtime() UNIX_TIMESTAMP()「建议收藏」from_unixtime()是MySQL里的时间函数  date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串  后面的 ‘%Y%m%d’ 主要是将返回值格式化  例如:  mysql>SELECT FROM_UNIXTIME( 1249488000, ‘%Y%m%d’ )    ->20071120  mysql>SELE

    2025年6月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号