以下是我的连接设置方式:connection conn=DriverManager.getConnection(url dbName)?useUnicode=true
我在向表中添加行时遇到以下错误:
不正确的字符串值:“\xF0\x90\x8D\x83\xF0\x90…”用于第1行的“内容”列
我正在插入数千条记录,当文本包含\xF0(即,错误的字符串值总是以\xF0开头)时,我总是会遇到此错误。
该列的整理utf8_general_ci。
会有什么问题?
遇到相同的问题,要使用utf8mb4
保存数据,需要确保:
>
character_set_client,character_set_connection,character_set_results
是utf8mb4
:character_set_client
和character_set_connection
表示客户端发送语句的字符集,character_set_results
表示其中服务器将查询结果返回给客户端。
请参见charset-连接。
表和列编码为utf8mb4
对于JDBC,有两种解决方案:
>
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
这可以确保数据库和character\u set\u客户端、character\u set\u连接、character\u set\u结果默认为
utf8mb4
。
重新启动MySQL
将表和列编码更改为
utf8mb4
停止在jdbc连接器中指定
characterEncoding=UTF-8
和characterSetResults=UTF-8
,因为这将覆盖character\u set\u客户端
,character\u set\u连接
,character\u set\u结果
到utf8
>
将表和列编码改为
utf8mb4
在jdbc连接器中指定
characterEncoding=UTF-8
,会导致jdbc连接器不支持utf8mb4
。
这样写你的sql语句(需要在jdbc连接器中添加
alloMultiQuery=true
):
'SET NAMES utf8mb4;INSERT INTO Mytable ...';
这将确保与服务器的每个连接、
character\u set\u客户端、character\u set\u连接、character\u set\u结果都是
utf8mb4
另请参见charset connection。
包含\xF0
的字符串只是使用UTF-8编码为多个字节的字符。
虽然归类设置为utf8_general_ci,但我怀疑数据库、表甚至列的字符编码可能不同。它们是独立的设置。尝试:
ALTER TABLE database.table MODIFY COLUMN col VARCHAR(255)
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
用实际数据类型替换VARCHAR(255)
MySQL的utf8
只允许在UTF-8中用3个字节表示的Unicode字符。这里有一个需要4个字节的字符:\xF0\x90\x8D\x83(U 10343哥特式字母SAUIL)。
如果您有MySQL 5.5或更高版本,您可以将列编码从utf8
更改为utf8mb4
。此编码允许在UTF-8中存储占用4个字节的字符。
您可能还需要在MySQL配置文件中将服务器属性character\u set\u server
设置为utf8mb4
。似乎Connector/J默认为3字节Unicode,否则:
例如,要将4字节UTF-8字符集用于连接器/J,请使用character\u set\u server=utf8mb4
配置MySQL服务器,并将characterEncoding
保留在连接器/J连接字符串之外。接头/J随后将自动检测UTF-8设置。
我的连接是这样设置的: 当tyring向表中添加一行时,我会遇到以下错误: 我正在插入数以千计的记录,当文本包含\xf0(即不正确的字符串值总是以\xf0开头)时,我总是得到这个错误。 列的排序规则是UTF8_GENERAL_CI。
问题内容: 这是我的连接设置方式: 尝试在表中添加行时出现以下错误: 我要插入数千条记录,并且当文本包含\ xF0时,总是会出现此错误(即,不正确的字符串值始终以\ xF0开头)。 该列的排序规则是utf8_general_ci。 可能是什么问题呢? 问题答案: MySQL的许可仅允许使用UTF-8中的3个字节表示的Unicode字符。在这里,您需要一个需要4个字节的字符:\ xF0 \ x90
我需要添加用户名从Facebook到数据库,这些名称有UTF-8字符,如 (ą,č,ę,ė,į,š,ų,ū).当我把它添加到数据库中,例如字母看起来像
我有一些代码如下所示。 该项目的标准字符集是“UTF-8”。并且所有消息都很好地打印为UTF-8。我猜把UTF-8字符串放入java.lang.Object是压垮UTF-8的原因。 我该怎么解决这个? 我已经试过了: =在上块中= =配置= 将消息转换器添加到root-context.xml中,如下所示。 ===*条件=== 感谢阅读和分享我的问题:D
问题内容: 我有一个带有“ñ”字符的字符串,并且我有一些问题。我需要将此字符串编码为UTF-8编码。我已经通过这种方式尝试过,但是没有用: 如何将该字符串编码为utf-8? 问题答案: Java中的对象使用无法修改的UTF-16编码。 唯一可以使用不同编码的是。因此,如果你需要UTF-8数据,则需要一个。如果你有一个包含意外数据的,则问题出在较早的地方,该错误地将一些二进制数据错误地转换为a (即
问题内容: 从我的数据库即时通讯获取以下字符串: 它应该说的是: 我试图像这样将其转换为utf-8: 但是仍然是同样的问题。 有任何想法吗? 问题答案: 使用npm中的utf8模块对字符串进行编码/解码。 安装: 在浏览器中: 在Node.js中: API: 编码: 将任何给定的JavaScript字符串(字符串)编码为UTF-8,并返回该字符串的UTF-8编码版本。如果输入字符串包含非标量值(即