gpt4 book ai didi

mysql - Ruby on Rails - 来自 ActiveRecord 的 MySQL 中的 UTF8 编码问题

转载 作者:可可西里 更新时间:2023-11-01 08:29:33 25 4
gpt4 key购买 nike

我有一个使用 Ruby 1.9 和 Rails 4 的网络应用程序。在我的本地 VM (ubuntu) 中,一切正常。我的数据库和表格使用的是 utf8_unicode_ci,数据很好地保存到表格中,并很好地打印在 webapp 页面上。我的问题出在我的生产服务器上(AWS 上的 EB)。我使用的是 MySQL,我的数据库是瑞典语格式,所以我使用以下命令将其转换为 UTF8:

# for my database
ALTER DATABASE xxx CHARACTER SET utf8 COLLATE utf8_unicode_ci;

# for each tables in the DB (didn’t affect a join table that I have but doesn’t matter)
ALTER TABLE xxx CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

但是我的 Rails 表单中包含特殊字符的所有数据都带有问号,例如 caract?res sp?ciaux。但是当我在页面上显示文本时,特殊字符会正确呈现。

此外,我在表中导入了一个语言列表,因此语言正确存储在数据库中(例如 françaistchèque),但是当我检索这些值时从网页上,我得到了:françaistchèque

我尝试了在互联网上找到的 4 种解决方案(可能不是按此顺序):

  1. 我在 config/application.rb 中添加了 config.encoding = "utf-8"
  2. 我在config/database.rb中添加了编码:utf8
  3. 我在初始化之前添加了这两行!

config/environment.rb

Encoding::default_internal = Encoding::UTF_8
Encoding::default_external = Encoding::UTF_8`
  1. 我在应用程序 Controller 中添加了一个过滤器

app/controllers/application_controller.rb

  before_filter :configure_charsets
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
protect_from_forgery with: :exception
def configure_charsets
response.headers["Content-Type"] = "text/html; charset=utf-8"
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
end
end

现在我有了所有这些配置,但我的问题仍然是一样的。好像这些修改没有影响任何东西。

最佳答案

尝试使用 utf 参数创建数据库:

CREATE DATABASE `mydb` CHARACTER SET utf8 COLLATE utf8_general_ci;

关于mysql - Ruby on Rails - 来自 ActiveRecord 的 MySQL 中的 UTF8 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30598514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com