转自:https://www.cnblogs.com/guoziyi/p/6054112.html
String url = "jdbc:mysql://HOST:PORT/DATABASE?useUnicode=true&characterEncoding=utf8mb4";
字符集UTF-8MB4
utf8mb4兼容utf8,且比utf8能表示更多的字符。
看unicode编码区
从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些字符,你才用utf8mb4,否则只是浪费空间。
官方地址:http://dev.mysql.com/doc/refman/5.5/en/charset-unicode-utf8mb4.html
MySQL 要存储emoji表情,因此发现我们常用的utf8 字符集根本无法存储表情。
首先将我们数据库默认字符集由utf8 更改为utf8mb4,对应的表默认字符集也更改为utf8mb4 已经存储表情的字段默认字符集也做了相应的调整。
SQL 语句
1 # 修改数据库: 2 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; 3 # 修改表: 4 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 5 # 修改表字段: 6 ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
修改MySQL配置文件
新增如下参数:
1 [client] 2 default-character-set = utf8mb4 3 4 [mysql] 5 default-character-set = utf8mb4 6 7 [mysqld] 8 character-set-client-handshake = FALSE 9 character-set-server = utf8mb4 10 collation-server = utf8mb4_unicode_ci 11 init_connect='SET NAMES utf8mb4'
检查环境变量 和测试 SQL 如下:
1 mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 2 +--------------------------+--------------------+ 3 | Variable_name | Value | 4 +--------------------------+--------------------+ 5 | character_set_client | utf8mb4 | 6 | character_set_connection | utf8mb4 | 7 | character_set_database | utf8mb4 | 8 | character_set_filesystem | binary | 9 | character_set_results | utf8mb4 | 10 | character_set_server | utf8mb4 | 11 | character_set_system | utf8 | 12 | collation_connection | utf8mb4_unicode_ci | 13 | collation_database | utf8mb4_unicode_ci | 14 | collation_server | utf8mb4_unicode_ci | 15 +--------------------------+--------------------+ 16 rows in set (0.00 sec)
MySQL版本必须为5.5.3以上版本,否则不支持字符集utf8mb4
测试,如下修改亦可
项目中的配置文件如下修改
jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://***.***.***.***:3306/fsmp?useSSL=false jdbc.username=*** jdbc.password=***
数据库连接池配置
相关推荐
MySQL中的UTF8与UTF8MB4是两种不同的字符编码方式,它们主要的区别在于对Unicode字符集的支持程度。本文将深入探讨这两种编码的区别,以便更好地理解它们在实际应用中的选择。 一、UTF8与UTF8MB4简介 UTF8是...
因此,在设计与无线互联网相关的MySQL数据库时,推荐采用UTF-8mb4字符集来确保能够妥善处理emoji表情符号,避免出现数据存储或显示上的问题。 #### 限制 使用UTF-8mb4字符集的前提条件包括: - MySQL服务器版本需...
- **更改字段字符集**:如果已有表中的某个字段需要存储emoji表情,可以通过ALTER TABLE命令修改字段的字符集为`utf8mb4`。例如: ```sql ALTER TABLE `article` MODIFY COLUMN `content` MEDIUMTEXT CHARACTER ...
解决这个问题的关键是使用正确的字符集,Mysql提供了utf8mb4字符集来支持存储emoji表情。 首先,我们需要在JDBC连接URL中指定字符编码为utf8mb4。例如: jdbc.url=jdbc:mysql://HOST:3306/your_database?useUnicode...
如果你的数据库需要存储如 Emoji 这样的4字节字符,就必须将字符集从`utf8`升级到`utf8mb4`。`utf8mb4`是`utf8`的超集,意味着所有有效的`utf8`字符在`utf8mb4`中也是合法的,但反之不成立。 转换过程涉及多个步骤...
3. 对于已经使用utf8字符集的数据库,如果需要兼容旧数据并且添加新的四字节字符存储需求,可以考虑使用MySQL的升级向导将数据库、表和列的字符集升级为utf8mb4。 4. 编写代码时,应考虑到MySQL数据库字符集的差异...
2. **字符集设置**:为了正确存储和检索emoji,你需要确保MySQL数据库的字符集设置为`utf8mb4`。`utf8mb4`是UTF-8的一个超集,它支持四字节的Unicode字符,而普通的`utf8`仅支持三字节的字符,不足以涵盖所有的emoji...
utf8mb4 已成为 MySQL 8.0 的默认字符集,在MySQL 8.0.1及更高版本中将 utf8mb4_0900_ai_ci 作为默认排序规则。 新项目只考虑 utf8mb4 UTF-8 编码是一种变长的编码机制,可以用1~4个字节存储字符。 因为历史遗留问题...
- 数据库字符集设置:确保MySQL数据库、表以及字段的字符集设定为`utf8mb4`,因为`utf8`只支持部分Unicode,而`utf8mb4`则支持所有Unicode字符,包括emoji。 - PHP连接设置:在连接MySQL时,使用`mysqli_set_...
总之,要成功地在MySQL中存储和读取emoji表情符号,关键在于使用`utf8mb4`字符集,并确保整个数据链路的兼容性。通过遵循上述步骤,你可以有效地处理这些丰富多彩的表情符号,为用户提供更加生动的交互体验。
MySQL从5.5.3版本开始引入了`utf8mb4`字符集,它是`utf8`的一个超集,专门用于支持4字节的Unicode字符。`mb4`代表“most bytes 4”,意味着它能够存储所有UTF-8编码的字符。因此,解决这个问题的关键就是将数据库、...
1. **数据库支持**:并非所有的数据库系统都原生支持Unicode字符集,如MySQL需要设置`utf8mb4`字符集来确保能正确存储emoji。在Laravel的`.env`配置文件中,你需要将`DB_CHARSET`设置为`utf8mb4`,并确保`DB_...
为了解决这个问题,MySQL 推出了 utf8mb4 编码,它是 MySQL 平台上 utf8 编码的超集,兼容 utf8,并且能存储 4 字节的表情字符。 采用 utf8mb4 编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与...
4. **升级MySQL版本**:部分早期版本可能存在已知的字符集兼容性问题,升级至最新版本可以解决这些问题。 #### 七、结论 在使用MySQL数据库时,正确理解和配置字符集至关重要。通过合理选择字符集和调整相关配置,...
为了解决这个问题,需要将MySQL数据库的字符集更改为utf8mb4,这是MySQL对UTF-8字符集的扩展,能够支持最多4字节的字符,完全兼容Emoji表情的存储。不过,在进行编码更改之前,必须确认MySQL的版本至少为5.5.3,因为...
MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集。 utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以...
因此,要解决MySQL无法存储Emoji表情的问题,需要将数据库、表以及字段的字符集都调整为utf8mb4。 首先,需要修改MySQL配置文件my.ini,在[mysql]和[mysqld]部分设置正确的字符集。具体操作如下: 1. 找到MySQL...
- **emoji表情乱码**:若涉及emoji等四字节字符,务必使用`utf8mb4`,因为`utf8`仅支持三字节字符。 - **连接问题**:某些老版本的MySQL驱动可能不支持`utf8mb4`,需升级至最新版。 4. **预防措施** - **统一...
如果你需要将包含Emoji的数据存储到数据库,确保数据库和表的字符集设置为支持Unicode的,例如`utf8mb4`,这是MySQL中支持全Unicode字符(包括Emoji)的编码。同样,连接数据库时,也要指定合适的字符集。 3. **...