返回顶部
首页 > 资讯 > 数据库 >mysql 部分字符存储报错 Incorrect string value问题解决
  • 491
分享到

mysql 部分字符存储报错 Incorrect string value问题解决

mysqljava数据库 2023-09-05 08:09:04 491人浏览 薄情痞子
摘要

原因分析 正常情况 utf-8 是一种可变长度的字符集,它的单个字符的长度范围可以在1~4字节之间变化。由于其支持字符范围广并且传输效率高而被广泛使用。虽然在 windows 中我们默认用的还是 gbk字符集 ,但是在使用浏览器浏览网站的时

原因分析

正常情况 utf-8 是一种可变长度的字符集,它的单个字符的长度范围可以在1~4字节之间变化。由于其支持字符范围广并且传输效率高而被广泛使用。虽然在 windows 中我们默认用的还是 gbk字符集 ,但是在使用浏览器浏览网站的时候大部分网站其实已经在广泛使用 utf-8字符集了。

而在 Mysql 当中由于一些历史原因,其直接支持的 utf-8 格式并非完全版的 utf-8。简单来说MySQL中的utf-8字符集并不完全支持utf-8具体表现就是只能保存最长字节为三字节的字符,而对于四字节编码的字符时,就会无法保存,并且抛出 Incorrect string value异常来声明"你输入了我无法识别的字符"。

为了解决无法保存四字节编码的utf-8字符的问题,MySQL在5.3.3版本时推出了 utf8mb4字符集。因此我们在使用时如果存在目标字段值中有emoji或者生僻字的情况时,最好使用 utf8mb4 字符集建表。
 

复现

CREATE TABLE tb_description(
    id int(11) AUTO_INCREMENT COMMENT '主键',
    description varchar(1024) COMMENT '评论',
    create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY(id)
)engine=InnoDB,charset=utf8;

INSERT INTO tb_description(description) VALUES("学到了😁"); 

 

解决办法

CREATE TABLE tb_description(
    id int(11) AUTO_INCREMENT COMMENT '主键',
    description varchar(1024) COMMENT '评论',
    create_time datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    PRIMARY KEY(id)
) engine=InnoDB,DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

在客户端插入前,设置编码,插入成功

SET NAMES utf8mb4; 

INSERT INTO tb_description(description) VALUES("学到了😁"); 

jdbc连接设置

jdbc.url=jdbc:mysql://xxx:3306/xx?useUnicode=true&characterEncoding=utf8mb4

如果Jfinal

jdbcUrl=jdbc:mysql://127.0.0.1:3306/blog

DruidPlugin 初始化后指定编码

DruidPlugin druidPlugin = getDruidPlugin();//指定编码为utf8mb4    druidPlugin.setConnectionInitSql("set names utf8mb4");me.add(druidPlugin);

来源

mysql遇到1366: Incorrect string value的正确解决方法_yes1983的博客-CSDN博客

MySQL插入数据 “Incorrect string value“ 错误解析_ghimi的博客-CSDN博客

来源地址:https://blog.csdn.net/csdncjh/article/details/129762992

您可能感兴趣的文档:

--结束END--

本文标题: mysql 部分字符存储报错 Incorrect string value问题解决

本文链接: https://lsjlt.com/news/394900.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作