转载自:http://my.oschina.net/u/2958/blog/108257
插入失败
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2620) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1662) at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1581)
1、linux 处理步骤:修改my.cnf vi /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
修改后重启Mysql
2. 以root身份登录Mysql
查看当前字符集 show variables like ‘character_set_%’
show variables like ‘collation_%’;
修改环境变量,将一下都修改成utf8mb4
1、set character_set_client = utf8mb4;
2、set character_set_connection = utf8mb4;
3、set character_set_database = utf8mb4;
4、set character_set_results = utf8mb4;
5、set character_set_server = utf8mb4;
3. 将已经建好的表也转换成utf8mb4
命令:alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名)
4. 知识补充 MYSQL 字符集问题
- MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。
- 对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
- MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;
简单的总结一下
如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。
相关推荐
因此,在设计与无线互联网相关的MySQL数据库时,推荐采用UTF-8mb4字符集来确保能够妥善处理emoji表情符号,避免出现数据存储或显示上的问题。 #### 限制 使用UTF-8mb4字符集的前提条件包括: - MySQL服务器版本需...
1. **Unicode支持**:MySQL 5.7.6引入了对Unicode 8.0的支持,这意味着它可以处理更多的字符集,包括广泛的emoji表情。这些表情是基于Unicode编码的,因此需要数据库系统能够识别并正确存储这些编码。 2. **字符集...
本文实例讲述了MySQL无法存储emoji表情解决方案。分享给大家供大家参考,具体如下: 今天学习爬虫爬伯乐在线的文章,由于在文章中有emoji表情,导致有emoji表情的文章都爬取不下来 经过一番搜索之后终于解决了问题。...
MySQL默认使用的`utf8`字符集只支持最多3个字节的Unicode字符,而大多数emoji表情符号属于4字节的Unicode范围(UTF-8编码下的U+10000到U+10FFFF)。因此,如果直接使用`utf8`存储,会遇到无法正确保存和读取emoji的...
- 数据库字符集设置:确保MySQL数据库、表以及字段的字符集设定为`utf8mb4`,因为`utf8`只支持部分Unicode,而`utf8mb4`则支持所有Unicode字符,包括emoji。 - PHP连接设置:在连接MySQL时,使用`mysqli_set_...
mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。 下面话不多说了,来一起看看详细的...
在IT行业中,尤其是在移动...总的来说,处理emoji表情存储问题的关键在于理解字符编码原理,特别是Unicode和MySQL字符集之间的关系。在开发过程中,应尽可能地考虑到各种设备和平台的差异,以提供更稳定和兼容的服务。
MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集。 utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以...
3.升级MySQL字符集:要存储Emoji表情,需要将MySQL的字符集设置为utf8mb4,这包括数据库、表和字段都要设置为utf8mb4。如果对已存在的表进行修改,需要确保所有相关的数据库、表和字段都进行了更改,否则修改不会...
Emoji是Unicode字符集的一部分,它们通过特殊的编码来表示各种图形表情。在不同的操作系统和设备上,同一Unicode码点可能显示不同的 Emoji 图形,因为这取决于系统字体库的支持。 在网页开发中,最简单地使用Emoji...
- **更改字段字符集**:如果已有表中的某个字段需要存储emoji表情,可以通过ALTER TABLE命令修改字段的字符集为`utf8mb4`。例如: ```sql ALTER TABLE `article` MODIFY COLUMN `content` MEDIUMTEXT CHARACTER ...
原因在于标准的Mysql的utf8字符集只支持最多三个字节的UTF-8编码,而emoji表情是使用四个字节的UTF-8编码,因此无法正确存储和显示。 为了解决这一问题,文章介绍了三种处理emoji表情的方法: 方法一:使用utf8mb4...
总结来说,MySQL无法存储Emoji表情的原因主要是字符集设置不支持四字节UTF-8字符。通过修改配置文件中的字符集设置、重启MySQL服务,以及调整数据库表和字段的字符集,可以有效地解决这一问题。 除了上述内容外,...
#### 一、MySQL字符集概述 MySQL数据库是瑞典MySQL AB公司开发的一款小型关系型数据库管理系统,因其速度快、易用性好、支持SQL、网络支持性好、可移植性好及费用低廉等特点,在互联网领域得到了广泛应用。MySQL...
为了解决这个问题,需要将MySQL数据库的字符集更改为utf8mb4,这是MySQL对UTF-8字符集的扩展,能够支持最多4字节的字符,完全兼容Emoji表情的存储。不过,在进行编码更改之前,必须确认MySQL的版本至少为5.5.3,因为...
为了解决这个问题,我们可以使用 utf8mb4 编码,该编码可以存储四个字节的字符,从而支持 emoji 表情的存储。 解决方法之一是将数据库编码集设置为 utf8mb4,无论是数据库还是表,还是字段。虽然这会增加存储,但是...