You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MariaDB无法插入特定Unicode字符U+242EE的问题求助

问题描述

使用MariaDB 10.6.16及10.3.39版本,执行以下SQL插入字符𤋮(U+242EE,2001年定义的Unicode字符)时触发错误:

CREATE TABLE problem (
    text   TEXT
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

INSERT INTO problem (text) VALUES ('𤋮');

错误信息:

ERROR 1366 (22007) at line 5: Incorrect string value: '\xF0\xA4\x8B\xAE' for column `problem`.`text` at row 1

已尝试以下操作未解决:

  • 确认字符并非过新编码
  • 在两个MariaDB版本中测试
  • 移除表定义的字符集与排序规则
  • 其他4字节字符可正常插入
解决方法

1. 强制连接字符集为utf8mb4

客户端连接数据库时,必须确保连接字符集为utf8mb4,避免字符传输过程中被错误转码:

  • 连接后立即执行:SET NAMES utf8mb4;
  • 或在客户端连接参数中指定(如命令行工具添加--default-character-set=utf8mb4)

2. 更换支持更广Unicode范围的排序规则

utf8mb4_unicode_ci基于Unicode 4.0标准,对CJK扩展B区的字符(如U+242EE)支持有限。可改用更新的排序规则:

  • 创建表时指定utf8mb4_unicode_520_ci(基于Unicode 5.2,覆盖更多扩展字符):
CREATE TABLE problem (
    text   TEXT
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
  • 若使用MariaDB 10.3及以上版本,也可选择utf8mb4_0900_ai_ci(基于Unicode 9.0)

3. 检查服务器全局字符集配置

确认服务器级默认字符集和排序规则为utf8mb4系列:

SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

若配置不符,修改my.cnf/my.ini后重启服务:

[mysqld]
character_set_server = utf8mb4
collation_server = utf8mb4_unicode_520_ci

内容的提问来源于stack exchange,提问作者Boldewyn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 10:31:10