【问题标题】:How can i let the MySQL innoDB support the new unicode character set, such as '\U0001f3b8'如何让 MySQL innoDB 支持新的 unicode 字符集,例如 '\U0001f3b8'
【发布时间】:2012-12-14 09:14:20
【问题描述】:

如何让 MySQL InnoDB 支持新的 Unicode 字符集,如\U0001f3b8

字符\U0001f3b8是一个GUITAR,由iPhone的输入法生成。

问题是它无法保存在 MySQL DB 中。

保存的列类型是VARCHAR,我试过改成TEXT,还是不行。

例外是:

警告:字符串值不正确:列的“\xF0\x9F\x8E\xB8” 第 1 行的“消息”

顺便说一句:我的工作环境是python + Django

【问题讨论】:

  • 哈...我找到了解决这个问题的另一种方法。使用 simplejson.dumps(),它会将 \U0001f3b8 转换为 utf8 代码(如:\xxxx \xxxx)。然后我可以翻译后保存。

标签: mysql innodb


【解决方案1】:

我假设 新的 unicode 字符集 意味着完全支持 UTF-8。您需要将表/列排序规则更改为包含utf8mb4 编码的排序规则。旧的 utf8 在不完整的实现中只支持最多三个字节。为此,您需要 MySQL/5.5。

【讨论】:

  • 无需假设:U+1f3b8 是一个表情符号字符(在 Supplementary Multilingual PlaneMiscellaneous Symbols And Pictographs 块中),因此,如问题所示,在 UTF-8 中由四字节序列0xf09f8eb8.
  • @eggyal - 我猜是因为这个问题甚至没有提到 UTF-8。
  • 感谢您的回答。我们的 MySQL 是 5.1,现在我知道 5.5 可以解决这个问题,但由于历史原因我无法升级它。
  • 你有什么其他办法解决这个问题吗???类似于将 utf8mb4 安装到 mysql 5.1 中。
  • 不知道 MySQL 5.1。你可以试试ucs2,但我不知道它是否提供完整的Unicode目录,而且你在读/写时还需要转换文本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多