在mysql中保存utf8mb4字符而不更改表或db

时间:2017-06-19 13:16:25

标签: mysql ruby-on-rails ruby utf8mb4

所以,我有一个需要保存在mysql列中的utf8mb4字符。我搜索了解决方案但是一切告诉我要么删除4字节字符,要么只是更改我的表的校对或字符集。

但是正如我所看到的那样,Rails ActiveRecord在转换为\ U0001F4A1并将其安全存储之前就已经这样做了。我想知道如何使用ruby或任何其他方式

1 个答案:

答案 0 :(得分:1)

简短回答: 你不能这样做。如果你想在mysql中保存4个字节的字符,你需要使用UTF8mb4

更长的回答: 以hacky方式,您可以使用序列化保存这样的字符。假设您的模型是Foo,并且保存4字节字符的列是bar,您将拥有类似的内容:

class Foo < ActiveRecord::Base
  serialize :bar
end

这是黑客攻击。它会起作用,但你需要序列化所有其他现有记录(否则你会遇到麻烦)。

在尝试在传统的UTF8数据库上支持表情符号时,一直在玩这样的想法,不幸的是,除了选择UTF8mb4之外,没有其他好办法可以解决这个问题。

另一个选择,如果你只对处理表情符号感兴趣,可以使用像emojimmy这样的东西