MySQL不想存储Unicode字符。

15

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

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

这个字符能否存储在MySQL中?


你可能想要检查一下这个链接:http://bugs.mysql.com/bug.php?id=14052,它看起来与此有关。 - xycf7
3个回答

14

MySQL仅支持基本多文种平面(0x0000 - 0xFFFF)的字符。

你使用的字符不在此平面内。

尝试存储一个同义词代替 :)

更新:

MySQL 5.5.3及以上版本(尚未正式发布)如果使用UTF8MB4编码,则支持补充字符。


在MySQL中遇到了utf8的问题已经困扰我好几天了。现在我知道原因了!谢谢! - user479911

2
第一:您的陈述
UTF16是U+2B5EE
略微有误。U+2B5EE是Unicode代码点的表示法,只是一个整数码-一个抽象的代码-而UTF16是字符集编码(可能的Unicode编码之一,如UTF-8)。
现在,假设您指的是代码点,U+2B5EE超出了BMP(前64K个Unicode代码点),并且似乎MySQL对它们 几乎没有支持。所以我怀疑您运气不佳。

1

自从这个问题被发布以来,MySQL 5.5.3已经发布,支持utf8mb4编码,提供完整的Unicode支持。使用这个字符集而不是utf8将解决您的问题。

我最近写了一份详细指南,介绍如何从MySQL的utf8切换到utf8mb4。如果您按照那里的步骤操作,一切都应该正常工作。以下是每个步骤的直接链接:

我怀疑您的问题可以通过遵循第5步来解决。希望这可以帮助您!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接