【问题标题】:Rails UTF8-encoding IssueRails UTF8 编码问题
【发布时间】:2012-01-05 13:04:45
【问题描述】:

我对 Rails 很陌生。

我有一个现有的 MS SQL 数据库并在其上构建 rails-app。我只是从现有表中搭建了所有需要的东西。

但是,我的 index.html.erb 源代码中有一个变音符号。

<td><%= wohnung.Grösse %></td>

但这会引发 500 内部服务器错误

development.log 对我没有帮助...:

Started GET "/wohnungs" for 127.0.0.1 at 2012-01-05 13:52:24 +0100
Processing by WohnungsController#index as HTML
[1m[36mWohnung Load (0.0ms)[0m  [1mEXEC sp_executesql N'SELECT [Wohnung].* FROM [Wohnung]'[0m
Rendered wohnungs/index.html.erb within layouts/application (15.6ms)
Completed 500 Internal Server Error in 62ms

如果我删除此行,它会起作用。但是文本中的所有其他变音符号都由“�”表示......

我做了什么:

  • 在 wohnung_controller 顶部添加了“#coding:utf-8”
  • 在 database.yml 中添加了“编码:utf8”,
  • 在 application.rb 中添加了 'config.encoding = "utf-8"',
  • 向 application.html.erb 文件添加了 meta http-equiv="Content-Type" content="text/html; charset=utf-8"

我不知道接下来我能做什么...请帮忙:)

您好, 野兽

【问题讨论】:

  • 不确定是不是拼写错误,但是 wohnung_controller 顶部的 '#coding: utf-8' 必须是 '#encoding: utf-8'
  • 是的,这是一个错字...错误实际上发生在 *.html.erb 文件中。但是我为 unicode 等添加了元标记。但没有任何改变,我仍然遇到问题......

标签: ruby-on-rails encoding utf-8


【解决方案1】:

为什么不使用像wohnung.groesse 这样的问题较少的限制?您可能只需要重命名数据库列。不建议在函数或数据库列名中使用特殊字符。

【讨论】:

  • 是的,将非 ASCII 字符放在方法名称中通常是个坏主意,它只会产生问题(比如这个)。
  • 是的,你是对的。我会重命名它们,谢谢 :-) 但我仍然有问题,我的文本中的变音符号显示不正确。变音符号由一个 �- 图标表示。 (网页中 db-entry 中的那些字符串...)如何解决? ://
  • utf8 是正确的编码。如果数据库具有字符集 utf8,它应该可以工作。您可以通过选项 'DEFAULT CHARSET=utf8' 在 database.yml 和 rails migration create_table 中选择编码
  • 嗨。看起来 db 的编码为“latin 1”……这可能是元音变音不正常的原因吗?
  • 是的,当然。您可以使用 ALTER DATABASE 或 ALTER TABLE 更改 MySQL 数据库或表的默认字符集,另请参见此处:woss.name/2006/10/25/…
猜你喜欢
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
相关资源
最近更新 更多