瞎扯淡 微信昵称 表情符号 数据库存放

kloong777 · 2017年02月20日 · 最后由 ken 回复于 2017年02月20日 · 2031 次阅读

取微信昵称存储到数据库的过程中 昵称无法保存的解决办法

代码层面解决 正常的 Base64 encode64 在遇到符号表情的时候无法正常 decode64 需要用 urlsafe_encode64

存储 nickname

def nickname_attr
  self.nickname = Base64.urlsafe_encode64 hash["nickname"] 
end


取 nickname

def real_nickname
    if self.nickname.present?
        self.nickname = Base64.urlsafe_decode64(nickname).force_encoding('UTF-8')
    end
end

数据库层面修改

修改数据库编码 ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

修改表和字段编码 ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

相关链接 https://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8

我选择用了一个 gem rumoji

需要 登录 后方可回复, 如果你还没有账号请 注册新账号