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。如果您按照那里的步骤操作,一切都应该正常工作。以下是流程中每个单独步骤的直接链接:

Step 1: Create a backup Step 2: Upgrade the MySQL server Step 3: Modify databases, tables, and columns Step 4: Check the maximum length of columns and index keys Step 5: Modify connection, client, and server character sets Step 6: Repair and optimize all tables

我怀疑您的问题可以通过执行第 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

关于VS2015 字符集采用Unicode时出现的问题

如何用python3制作unicode字符串

python - 使用 Django 将 Unicode 字符存储到 MySQL 时出现问题

javascript转到带有unicode字符的url

使用 PHP 和 MySQL 存储和显示 unicode 字符串 (हिन्दी)