文档章节

MYSQL异常のIncorrect string value: '\xF0\x9F\x91\xBD\

 开始奔跑的老农
发布于 2016/06/24 16:45
字数 465
阅读 17
收藏 0
点赞 0
评论 0

导致这个问题的原因是mssql的utf-8不支持表情字符,同样的问题在stackoverflow上已有人提出:

I have the following string value: "walmart obama 👽💔"

I am using MySQL and Java.

I am getting the following exception: `java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F...'

Here is the variable I am trying to insert into:

var1 varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL`

My Java code that is trying to insert "walmart obama 👽💔" is a preparedStatement. So I am using the setString() method.

It looks like the problem is the encoding of the values 👽💔. How can I fix this? Previously I was using Derby SQL and the values 👽💔 just ended up being two sqaures (I think this is the representation of the null character)

All help is greatly appreciated!

回答如下:

What you have is EXTRATERRESTRIAL ALIEN (U+1F47D) and BROKEN HEART (U+1F494) which are not in the basic multilingual plane(基本多语言平面). They cannot be even represented in java as one char, "👽💔".length() == 4. They are definitely not null characters and one will see squares if you are not using fonts that support them.

MySQL's utf8 only supports basic multilingual plane, and you need to use utf8mb4 instead:

For a supplementary character, utf8 cannot store the character at all, while utf8mb4 requires four bytes to store it. Since utf8 cannot store the character at all, you do not have any supplementary characters in utf8 columns and you need not worry about converting characters or losing data when upgrading utf8 data from older versions of MySQL.

So to support these characters, your MySQL needs to be 5.5+ and you need to use utf8mb4 everywhere. Connection encoding needs to be utf8mb4, character set needs to be utf8mb4 and collaction needs to be utf8mb4. For java it's still just "utf-8", but MySQL needs a distinction.

I don't know what driver you are using but a driver agnostic way to set connection charset is to send the query:

SET NAMES 'utf8mb4'

Right after making the connection.

See also this for Connector/J:

23.3.15.15: How can I use 4-byte UTF8, utf8mb4 with Connector/J?

To use 4-byte UTF8 with Connector/J configure the MySQL server with character_set_server=utf8mb4. Connector/J will then use that setting as long as characterEncoding has not been set in the connection string. This is equivalent to autodetection of the character set.

Adjust your columns and database as well:

var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL

Again, your MySQL version needs to be relatively up-to-date for utf8mb4 support.

 

本文转载自:http://stackoverflow.com/questions/13653712/java-sql-sqlexception-incorrect-string-value-xf0-x9f-...

共有 人打赏支持
粉丝 0
博文 3
码字总数 502
作品 0
广州
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\x91\xE5\xB0...' for column

Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx91x91xE5xB0...' for column NICK_NAME 发现日志里有挺多这种错误,是什么原因造成的,是写入名称的时候会报这个错,而且...

地瓜干
2016/02/15
1K
2
Python下访问MYSQL的方法总结

在Python下做过服务器开发的小伙伴对ORM技术一定都不陌生,ORM(Object-Relational Mapping),将关系数据库的表结构映射到对象上,隐藏了数据库操作背后的细节,简化了对数据操作的写法,使...

zwgdft
2016/10/15
0
0
tf.train.match_filenames_once 获取符合正则表达式的文件列表

import as # 获取符合正则表达式的文件列表 r"C:UsersqykDesktop工作计划网络自研团队工作计划*" with as print(sess.run(file_names)) 结果 [b'C:\Users\qyk\Desktop\xe5xb7xa5xe4xbdx9cxe...

隐士2018
07/10
0
0
java后台怎么保存IOS表情

java在后台接受到的表情,都是各种乱码,更不要说存入数据库了,在数据库响应表字段的编码改为utfmb4的情况下,有什么好办法? 插入数据库时提示 Cause: java.sql.SQLException: Incorrect ...

大海
2016/06/23
905
7
解决mysql无法存储表情符

Incorrect string value: 'xF0x9Fx98x81' for column 'job' at row 23 解决办法: 1、修改配置文件my.ini [mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 2、......

nibilly
2016/12/14
17
0
请问下加了@Before(Tx.class)为什么还是主表插入了从表没有?

@JFinal 你好,想跟你请教个问题: 这个是代码: /** 新增评论[文章] */ @Before(Tx.class) public void insertCommentServer(Map map) { try { Record comment = new Record().set("commen......

慕容小伟
2015/10/26
497
1
再次遇到的不得不解决的问题

我在做使用java对数据库mysql插入数据的时候报出来的错误如下:java.sql.SQLException: Incorrect string value: 'xF0x9Fx90xB7xE8xBE...' for column 'commentDesc' at row 1 at com.mysql......

awang
2012/11/14
1K
3
再谈 My sql UTF8

UTF-8可能是我们使用的最多的一种字符编码,一直以其支持的广泛的字符被人称道,我也经常在项目中使用它,至到遇到了:SQL state [HY000]; error code [1366]; Incorrect string value: 'xF...

idoz
2015/08/26
0
0
Emoji表情符号录入MySQL数据库报错的解决方案

前言:手机app应用评论的时候,恢复表情符号,提示失败。 1,查看tomcat后台日志,核心报错信息如下: Caused by: java.sql.SQLException: Incorrect string value: 'xF0x9Fx98x97xF0x9F......

寻知者
2016/12/17
10
0
python 爬虫 爬百度贴吧 爬下来的汉字是ascii怎么破

import urllib2from lxml import etreeurl = "http://tieba.baidu.com/f?ie=utf-8&kw=%E8%81%8A%E5%9F%8E&red_tag=y1218768893"request = urllib2.Request(url)response = urllib2.urlopen(r......

机灵的小不懂
2017/12/03
165
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaEE——JavaScript

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 JavaScript 内置对象 String对象方法: date对象...

凯哥学堂
9分钟前
0
0
Git 远程代码回滚master

方式一(推荐): git revert commit-id 方式二(不推荐):不推荐原因:推送到线上后,其它开发人员需要重新clone git reset --hard commit-id git push origin HEAD --force...

浮躁的码农
9分钟前
0
0
Elasticesearch学习(7)—— ES查询与Java API的对应关系

1、普通查询 类型 ES查询语句 Java查询实现 结果 查询格式 { "query": { "bool": { "must": [], "must_not": [], "should": [], "filter": [] } }, "from": 0, "size": 10, "sort": [] } Que......

叶枫啦啦
10分钟前
4
0
getElementsByClassName()与getElementById()区别

1.document.getElementsByClassName() 返回的是数组 使用:document.getElementsByClassName("className")[0].innerText='具体内容' 2.document.getElementById() 返回的是单个元素 使用:d......

botkenni
21分钟前
0
0
MyBatis入门

一、安装 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>x.x.x</version></dependency> 二、从 XML 中构建 SqlSessionFactory String r......

一个yuanbeth
22分钟前
0
0
聊聊spring cloud的LoadBalancerAutoConfiguration

序 本文主要研究一下spring cloud的LoadBalancerAutoConfiguration RibbonAutoConfiguration spring-cloud-netflix-ribbon-2.0.0.RC2-sources.jar!/org/springframework/cloud/netflix/ribb......

go4it
24分钟前
0
0
【转】使用Lombok来优雅的编码

前言 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO)。它通过注解实现这一目的。 正文 添加依赖 在 pom.xml 文件中添加相关依赖:...

HAVENT
26分钟前
0
0
Dubbo 源码解读 —— 可支持序列化及自定义扩展

一、概述 从源码中,我们可以看出来。目前,Dubbo 内部提供了 5 种序列化的方式,分别为 fastjson、Hessian2、Kryo、fst 及 Java原生支持的方式 。 针对不同的序列化方式,对比内容如下: 名...

Ryan-瑞恩
34分钟前
0
0
MySQL内存设置—— MySQL server has gone away

set global max_allowed_packet=268435456

一梦心草
43分钟前
0
0
推导式

列表、集合和字典推导式 列表推导式是Python最受喜爱的特性之一。它允许用户方便的从一个集合过滤元素,形成列表,在传递参数的过程中还可以修改元素。形式如下: [expr for val in collect...

火力全開
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部