mysql存储4字节的表情包数据报异常_Emoji表情包_Incorrect string value: ‘xF0x9Fx98x84xF0x9F「建议收藏」

mysql存储4字节的表情包数据报异常_Emoji表情包_Incorrect string value: ‘xF0x9Fx98x84xF0x9F「建议收藏」本文章转载自:https://www.cnblogs.com/coprince/p/7485968.html 原文如下: 问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varch

本文章转载自:https://www.cnblogs.com/coprince/p/7485968.html

 

原文如下:

 

问题描述:从新浪微博抓取消息保存到MySQL数据中,对应数据库字段为varchar,字符编码utf-8。部分插入成功,部分插入失败,报错如标题。

在网上查询,有人说是编码问题,建议修改编码格式,比如改成gbk,UTF-8,blob等等,但是几乎没有人给出更详细的答案。在一个英文网站上,才发现真正错误的原因。链接1 链接2

 

错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范)。正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智能手机输入法中的表情。那为什么会报错呢?因为mysql中的utf-8并不是真正意义上的utf-8,它只能存储1~3个字节长度的utf-8编码,如果想存储4个字节的必须用utf8mb4类型。不而要使用utf8mb4类型,首先要保证Mysql版本要不低于 MySQL 5.5.3。

 

解决方案:

1)使用utf8mb4数据类型

   要用这种策略,如果MySql版本低于5.5.3,首先要进行版本升级,然后将对应的数据类型改为utf8mb4类型。如果使用的是Connector/J 连接数据库,需要在配置中把编码格式改为utf8mb4(set character_set_server=utf8mb4 in the connection config)。

2)自定义过滤规则,将文本中出现的四字节UTF-8字符过滤或转化为自定义类型。

    下面是将4字节字符转化为0000的测试例子。

for (int i = 0; i < b_text.length; i++) 
{ 
    if((b_text[i] & 0xF8)== 0xF0){ 
        for (int j = 0; j < 4; j++) {                         
        b_text[i+j]=0x3f;        
    } 
    i+=3; 
    } 
} 

代码100分

 

 

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

(0)
上一篇 2022-12-16
下一篇 2022-12-16

相关推荐

  • 上海市企业数据名录爬取采集与收集

    上海市企业数据名录爬取采集与收集2019年全年上海市新设立各类市场主体43.15万户。其中,新设企业36.76万户;新设个体工商户6.35万户;新设农民专业合作社349户。日均新设企业1476户。至年末,上海市共有各类市场主体27…

    2023-02-27
    154
  • 用Python的Tkinter模块创建GUI窗口

    用Python的Tkinter模块创建GUI窗口图形用户界面(Graphical User Interface, GUI)是现代计算机上最流行的应用程序类型之一。它提供了一种直观和易于使用的界面,可以帮助用户更好地与计算机交互和控制应用程序。Python是一个强大的编程语言,它支持多种GUI工具包,其中Tkinter是一个Python标准库,它提供了创建GUI应用程序的基本工具。在本文中,我们将详细讨论使用Python的Tkinter模块创建GUI窗口的方法,从而帮助您掌握它。

    2024-02-25
    115
  • 阿里云服务器 Centos 7 安装 MySQL Community Server 8.0.21

    阿里云服务器 Centos 7 安装 MySQL Community Server 8.0.21官网地址:https://dev.mysql.com/downloads/mysql/ 下载 1. Select Operating System: 选择 Red Hat ,CentOS 是基于红帽…

    2023-04-01
    152
  • python结构化文件处理(Python文件处理)

    python结构化文件处理(Python文件处理)Python处理两种不同类型的文件:二进制文件和文本文件。了解两者之间的差异很重要,因为它们的处理方式不同。

    2023-10-28
    143
  • 基于PyCharm的Python工程师技能培养

    基于PyCharm的Python工程师技能培养在当今的技术发展中,Python已经成为了非常重要的一门编程语言。同时,Python的灵活性、易学性、可读性等特点也使得它成为了广大编程爱好者和工程师的首选编程语言之一。而作为Python环境中的一款非常受欢迎的编辑器,PyCharm不仅有着强大的功能和工具,还能够帮助程序员更高效地编写代码、debug、协同工作等。因此,基于PyCharm的Python工程师技能培养也成为了大众关注的一个重要话题。

    2024-07-19
    38
  • CDH6.0.1 搭建过程及所遇到的错误处理[通俗易懂]

    CDH6.0.1 搭建过程及所遇到的错误处理[通俗易懂]一、集群服务器配置说明(整个过程中我会提前把一些小坑填上,有的坑后面没有提到) IP 节点名 OS Cores Memory Disk Remark 172.25.16.1 cdh1 CentOS7.

    2023-02-18
    151
  • MySQL 8.0.19客户端的一个小变化

    MySQL 8.0.19客户端的一个小变化本文作者:叶金荣,知数堂联合创始人,MySQL DBA课程讲师。Oracle MySQL ACE,MySQL布道师。有多年MySQL及系统架构设计经验,擅长MySQL企业级应用、数据库设计、优化、故…

    2023-02-11
    140
  • sql server的简单分页

    sql server的简单分页–显示前条数据 select top(4) * from students; –pageSize:每页显示的条数 –pageNow:当前页 select top(pageSize) * from

    2022-12-24
    146

发表回复

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