如何使用ruby(mysql2 gem)在MySQL 5.5中存储4字节字符

时间:2013-08-13 11:55:12

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

我的问题是我的API服务器无法存储可在iOS客户端上显示的字符。该字符为1F49Dhttp://shapecatcher.com/unicode/info/128157)。

服务器端:

  • ruby​​ 1.9.3-p327
  • activerecord 3.2 with mysql2
  • 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。但它不起作用。
  5. 任何人都可以给我一个建议如何将此文本保存到/从mysql中恢复?

1 个答案:

答案 0 :(得分:2)

先决条件:MySQL> = 5.5.3

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

  1. 将所有表/列的字符集/排序规则切换为utf8mb4
  2. 编辑您的config / database.yml,将encoding: utf8行更改为encoding: utf8mb4
  3. (以及最近的mysql2 gem?)