【问题标题】:How to store 4-byte character in MySQL 5.5 using ruby (mysql2 gem)如何使用 ruby​​ (mysql2 gem) 在 MySQL 5.5 中存储 4 字节字符
【发布时间】:2013-08-15 00:45:54
【问题描述】:

我的问题是我的 API 服务器无法存储可以在 iOS 客户端上显示的字符。角色是1F49D (http://shapecatcher.com/unicode/info/128157)。

服务器端:

  • 红宝石 1.9.3-p327
  • 带有 mysql2 的 activerecord 3.2
  • MySQL 服务器:5.5.28

仅供参考:

  1. 以前我们的 iOS 客户端使用 parse.com 作为持久性服务。现在,我们转移到我们拥有的 API 服务器(在 ruby​​ 中实现)。
  2. 当我尝试使用irb 时。 Ruby 1.9 可以阅读和理解这个字符。
  3. 这是包含字符的文本。 https://gist.github.com/jacobdam/6220339/raw/1562815fe37df04293d3cee7d216e920415de715/gistfile1.txt
  4. 我将架构、表、列排序规则更改为utf8utf16。但它不起作用。

任何人都可以给我一个建议,如何在 mysql 中保存/检索此文本?

【问题讨论】:

  • 你需要使用utf8mb4 charset而不是utf8(mb3)(意味着MySQL >= 5.5.3)
  • 感谢@julp,utf8mb3 现在可以使用了。你可以发布一个答案,所以我可以接受你的答案吗? :)
  • 哦,对不起。我错过了错字。我的意思是utf8mb4。我花了很长时间研究。因为不知道是ruby语言的问题,还是mysql2 gem,还是MySQL,还是AR等问题。

标签: mysql ruby-on-rails-3 ruby-on-rails-3.2 ruby-1.9.3 mysql2


【解决方案1】:

先决条件:MySQL >= 5.5.3

名为 utf8(或 utf8mb3)的字符集每个字符最多使用三个字节,并且仅包含 BMP 字符。为了每个字符最多有四个字节,您需要:

  1. 将所有表/列的字符集/排序规则切换为utf8mb4
  2. 编辑您的 config/database.yml 以将 encoding: utf8 行更改为 encoding: utf8mb4

(以及最近的 mysql2 gem?)

【讨论】:

  • 是的。 mysql2gem v0.3.13。 mysql2 必须在安装mysql 5.5.3+ 之后安装。
猜你喜欢
  • 2013-09-14
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 2013-09-27
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多