所以,我有一个需要保存在mysql列中的utf8mb4字符。我搜索了解决方案但是一切告诉我要么删除4字节字符,要么只是更改我的表的校对或字符集。
但是正如我所看到的那样,Rails ActiveRecord在转换为\ U0001F4A1并将其安全存储之前就已经这样做了。我想知道如何使用ruby或任何其他方式
答案 0 :(得分:1)
简短回答: 你不能这样做。如果你想在mysql中保存4个字节的字符,你需要使用UTF8mb4
更长的回答: 以hacky方式,您可以使用序列化保存这样的字符。假设您的模型是Foo,并且保存4字节字符的列是bar,您将拥有类似的内容:
class Foo < ActiveRecord::Base
serialize :bar
end
这是黑客攻击。它会起作用,但你需要序列化所有其他现有记录(否则你会遇到麻烦)。
在尝试在传统的UTF8数据库上支持表情符号时,一直在玩这样的想法,不幸的是,除了选择UTF8mb4之外,没有其他好办法可以解决这个问题。
另一个选择,如果你只对处理表情符号感兴趣,可以使用像emojimmy这样的东西