15

为什么 MySQL 不存储 unicode 字符?是的,它是一种罕见的象形文字,你不会在浏览器中看到它。
UTF16 是U+2B5EE

Warning: #1366 Incorrect string value: '\xF0\xAB\x97\xAE' for column 'ch' at row 1

是否可以将这个字符存储在 MySQL 中?

4

3 回答 3

14

MySQL仅支持来自基本多语言平面 ( 0x0000- 0xFFFF) 的字符。

如果这架飞机,你的角色就出来了。

尝试存储同义词:)

更新:

MySQL 5.5.3UTF8MB4如果您使用encoding,并且 on (还没有 GA)确实支持补充字符。

于 2010-04-22T15:45:51.903 回答
2

第一:你的陈述

UTF16 是 U+2B5EE

有点不对。U+2B5EE是 Unicode 代码点的符号只是一个整数 - 一个抽象代码 - 而 UTF16 是一种字符集编码(可能的 Unicode 编码之一,与 UTF-8 一样)。

现在,假设您的意思是代码点,U+2B5EE在 BMP(前 64K Unicode 代码点)之外,似乎 mysql对它们几乎没有支持。所以我怀疑你运气不好。

于 2010-04-22T15:46:58.160 回答
1

自发布此问题以来,MySQL 5.5.3 已发布,它支持utf8mb4提供完整 Unicode 支持的编码。切换到此字符集而不是utf8可以解决您的问题。

我最近写了一篇关于如何从 MySQL 切换utf8utf8mb4. 如果您按照那里的步骤操作,一切都应该正常工作。以下是流程中每个单独步骤的直接链接:

我怀疑您的问题可以通过执行第 5 步来解决。希望这会有所帮助!

于 2012-08-07T06:57:38.947 回答