MySQL不想存储unicode字符

时间:2010-04-22 15:31:25

标签: mysql unicode utf8mb4

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

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

是否可以在MySQL中存储此角色?

3 个答案:

答案 0 :(得分:14)

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

如果这架飞机你的角色出局了。

尝试存储同义词:)

<强>更新

如果您使用UTF8MB4 encoding

MySQL 5.5.3和on(尚未通过GA)确实支持补充字符。

答案 1 :(得分:2)

首先:你的陈述

  

UTF16是U + 2B5EE

有些不对劲。 U+2B5EE是Unicode codepoint 的符号,只是一个整数 - 一个抽象代码 - 而UTF16是一个字符集编码(可能的Unicode编码之一,就像UTF-8一样)。 / p>

现在,假设你的意思是代码点,U+2B5EE在BMP之外(第一个64K unicode代码点),似乎mysql有little or no support for them。所以我怀疑你运气不好。

答案 2 :(得分:1)

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

我最近写过a detailed guide on how to switch from MySQL’s utf8 to utf8mb4。如果你按照那里的步骤,一切都应该正常工作。以下是该流程中每个步骤的直接链接:

我怀疑你的问题可以通过以下步骤5来解决。希望这会有所帮助!