【问题标题】:Smartquotes displayed fine in Rails 2, now a problem in Rails 3智能引号在 Rails 2 中显示良好,现在在 Rails 3 中出现问题
【发布时间】:2023-12-07 07:00:01
【问题描述】:

我的 Rails 应用程序在 mysql 数据库中运行,当我从 Rails 2.8、Ruby 1.8 和 mysql gem 切换到 Rails 3.0.7、Ruby 1.9.2 和 mysql2 gem 时,我的页面突然使用 smartquotes(弯引号)和 em-dashes 等进行渲染,看起来都像胡言乱语。

我假设这与 UTF-8 有关,但我不知道如何确定它。

以下是我所知道的:

(1)config/database.yml 有以下内容:

development:
  adapter: mysql2
  encoding: utf8

(2)config/application.rb 有以下内容:

config.encoding = "utf-8"

不知道从那里去哪里。

有什么建议吗?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 utf-8 ascii upgrade


【解决方案1】:

您可以通过做两件事将其缩小到数据库与视图:

  1. rails console # 在你的终端中的项目目录中,然后测试你的 ActiveRecord 对象是否有正确的数据。

  2. 在您的浏览器中查看源代码以查看生成的源代码是否输入了正确的字符。


稍后:

这可能是重复的:mysql2 gem, Rails 3.0.3 and "incompatible character encodings" errorshttps://github.com/brianmario/mysql2/issues/124

甚至可能是这里的猴子补丁:http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/

【讨论】:

  • 我在 ActiveRecord 上查看过它:至少在我的终端中它看起来仍然很奇怪。例如,“ 而不是弯引号。这可能与我将数据库转储并导入新环境的方式有关。 (如果是这样,是否有转换工具?)但是,如果我使用 phpMyAdmin 查看数据库,即使是运行 Rails 2 并且正确显示大括号的实时生产站点也会显示乱码。所以我很难知道问题到底出在哪里。你有什么建议?