2017-06-19 32 views
-2

所以,我有一個utf8mb4字符需要保存在mysql的一列中。我搜索瞭解決方案,但是一切都告訴我要麼刪除4個字節的字符,要麼改變我的表格的排序規則或字符集。在mysql中保存utf8mb4字符而不改變表或db中的任何內容

但正如我看到的Rails ActiveRecord這樣做,因爲它轉換爲\ U0001F4A1並安全地存儲它較早。我想知道如何做到這一點,無論是使用紅寶石或任何其他方式

回答

1

簡短的回答: 你不能這樣做。如果你想在mysql中保存4個字節的字符,你需要使用UTF8mb4

較長的回答: 以一種拙劣的方式,你可以保存像序列化的字符。假設你的模型是Foo和在那裏你節省4字節的字符列是吧,你會有這樣的:

class Foo < ActiveRecord::Base 
    serialize :bar 
end 

這是黑客,但。它會工作,但你需要序列化所有其他現有的記錄(否則你要求麻煩)。

一直在嘗試支持傳統UTF8數據庫上的emojis,並且不幸的是,除了選擇UTF8mb4以外,我們沒有其他好的方法去解決這個問題。

,如果你只在處理使用表情符號感興趣的另一種方法是使用類似emojimmy

+0

我做表的字符集轉換成utf8mb4但這並沒有改變什麼,我還是得到同樣的錯誤如前,但是正如你所說的,序列化確實有效,所以我不會這樣做,除非完全有必要 – akabhirav

+0

@akabhirav你是否還更新了database.yml文件以使用utf8mb4編碼而不是utf8?按照http://blog.arkency.com/2015/05/how-to-store-emoji-in-a-rails-app-with-a-mysql-database/ – TomD

+0

我改變了只有一個表的字符集,是否有可能對單個表執行database.yml中的更改 – akabhirav

相關問題