【问题标题】:Rails/Devise/ActiveRecord not accepting unicode charactersRails/Devise/ActiveRecord 不接受 unicode 字符
【发布时间】:2014-11-17 13:15:10
【问题描述】:

我正在使用带有 rails 4 和 ruby​​ 2.0 的 Devise,数据库是 MySQL Ver 14.14 Distrib 5.5.38。当用户使用“Мукеш”(Mukesh 的俄语)之类的名称注册时,我收到如下错误

Mysql2::Error: 字符串值不正确

我尝试通过 MySQL Workbench 编辑数据库并且它正在工作,但是 rails 在显示该数据时显示问号。

如何告诉 ORM/Rails/Devise 接受 Unicode 字符?如果需要更多详细信息,请告诉我

提前致谢,

【问题讨论】:

  • 您是否尝试将编码添加到 database.yml encoding: utf8
  • 还可以尝试将config.encoding = "utf-8" 添加到您的application.rb
  • 我在 database.yml 中有 utf8 编码。我应该指定什么编码?
  • 还有一件事,MySQL工作台没有报错,但是那里的数据显示为“????”。这是否意味着我的 MySQL 配置未设置为接受 unicode 字符??
  • SHOW VARIABLES LIKE 'character\_set\_%'; 找到您的默认编码并将其更改为 utf-8(如果还没有的话)。唯一的缺点是你会丢失 mysql 5.6 全文搜索,我猜你可能不需要 users 表

标签: mysql ruby-on-rails ruby devise rails-activerecord


【解决方案1】:

这是 MySQL 数据库列的问题。受到@minthouse 的话的启发,我更改了name 列的编码,而不是整个表。

ALTER TABLE users MODIFY name VARCHAR(50) CHARACTER SET utf8;

感谢@minthouse 的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多