MySQL 不想存储 unicode 字符
Posted
技术标签:
【中文标题】MySQL 不想存储 unicode 字符【英文标题】:MySQL don't want to store unicode character 【发布时间】:2011-02-11 03:22:47 【问题描述】:为什么 mysql 不存储 unicode 字符 ????
?是的,它是一种罕见的象形文字,您不会在浏览器中看到它。
UTF16 是U+2B5EE
Warning: #1366 Incorrect string value: '\xF0\xAB\x97\xAE' for column 'ch' at row 1
是否可以将这个字符存储在 MySQL 中?
【问题讨论】:
你可能想检查一下这个bugs.mysql.com/bug.php?id=14052它似乎相关。 【参考方案1】:自发布此问题以来,MySQL 5.5.3 已发布,它支持 utf8mb4
编码,提供完整的 Unicode 支持。切换到此字符集而不是 utf8
将解决您的问题。
我最近写了a detailed guide on how to switch from MySQL’s utf8
to utf8mb4
。如果您按照那里的步骤操作,一切都应该正常工作。以下是流程中每个单独步骤的直接链接:
我怀疑您的问题可以通过执行第 5 步来解决。希望这会有所帮助!
【讨论】:
【参考方案2】:首先:你的陈述
UTF16 是 U+2B5EE
有点不对。 U+2B5EE
是 Unicode codepoint 的符号,只是一个整数 - 一个抽象代码 - 而 UTF16 是一种字符集编码(可能的 Unicode 编码之一,UTF-8 也是如此)。
现在,假设您的意思是代码点,U+2B5EE
在 BMP(前 64K Unicode 代码点)之外,并且似乎 mysql 有 little or no support for them。所以我怀疑你运气不好。
【讨论】:
【参考方案3】:MySQL
仅支持来自基本多语言平面 (0x0000
- 0xFFFF
) 的字符。
如果这架飞机你的角色不在。
尝试存储同义词 :)
更新:
MySQL 5.5.3
及以上(尚未正式发布)如果您使用 UTF8MB4
encoding,则支持补充字符。
【讨论】:
在 MySQL 中遇到 utf8 的问题已经好几天了。现在我知道为什么了!谢谢!以上是关于MySQL 不想存储 unicode 字符的主要内容,如果未能解决你的问题,请参考以下文章
MySQL字符存储:charset-unicode-sets