【发布时间】:2016-09-06 17:34:14
【问题描述】:
我无法将特殊字符( ???? 或 ???? )保存到 mySQL 数据库。
运行 SQL 语句(???? 或 ????)=> '' 我的字段的保存值为空白且未返回错误
- MySQL 版本:'5.5.46-0ubuntu0.12.04.2-log'
- 排序规则:utf8 - 默认排序规则
- 引擎:InnoDB
- 字段数据类型:VARCHAR(255)
【问题讨论】:
-
一种保存特殊字符的方法是简单地将它们编码为
-diamond-、-xmastree-,然后在显示数据时对表中的值进行替换。 -
这两个字符,GEM STONE (U+1F48E) 和 CHRISTMAS TREE (U+1F384),都位于 Miscellaneous Symbols and Pictographs Unicode 块中,而后者又位于 Supplementary Multilingual Plane 中。 MySQL 的
utf8字符集没有扩展那么远——使用utf8mb4代替。 -
@eggyal:感谢您的回答。我将排序规则更改为 utf8mb4_unicode_ci。保存的值但是( ???? 或 ???? )=>( ???? 或 ???? )
-
我想你会发现它现在是 Workbench 无法处理补充字符。我相信它在内部使用 UTF-8,因此将
utf8设置为charset of its database connections(即使它可以支持utf8mb4,这表明这可能是一个错误)。你可以试试SET NAMES 'utf8mb4';?
标签: mysql mysql-workbench