【问题标题】:How to allow right to left languages in Ruby on Rails 3如何在 Ruby on Rails 3 中允许从右到左的语言
【发布时间】:2011-02-01 19:17:52
【问题描述】:

我有兴趣使用 Ruby on Rails 3 用希伯来语创建一个网站。问题是,当我将希伯来语放入我的视图时,我被告知它不受支持,我应该添加 UTF-8。

我已经为此工作了一段时间,但我似乎无法找到如何做到这一点。我也在使用 Sqlite3,我也想在那里保存希伯来语字符串。

我将如何实现这一目标?

我得到的错误代码是:

Your template was not saved as valid UTF-8. Please either specify UTF-8 as the encoding for your template in your text editor, or mark the template with its encoding by inserting the following as the first line of the template:...

编辑:

问题是我正在使用 Notepad++,它没有以 UTF-8 格式保存我的文件,尽管它们是 UTF-8 格式的文件。通过更改文件格式解决。

【问题讨论】:

  • 请添加具体的代码和错误信息/stacktraces。
  • “代码”只是在视图中添加一个希伯来语单词。我在视图中添加了错误代码。
  • 这听起来像是文件编码问题。你用的是什么编辑器?

标签: ruby-on-rails-3 hebrew right-to-left


【解决方案1】:

如果您使用的是notepad++,请先将编码设置为“以UTF-8编码”,然后开始编码。如果您已经创建/保存了文件,那么仅更改编码类型是行不通的。您必须保留现有代码的副本,然后删除现有文件,打开记事本++,首先设置编码(UTF-8 编码),然后开始向其中写入/复制代码。这样可以确保 utf-8 编码,您不必在文件顶部放置“# encoding: UTF-8”。

【讨论】:

    【解决方案2】:

    您应该尝试在.rb 文件的第一行添加以下内容:

    # encoding: utf-8
    

    在.erb的第一行

    <%# encoding: utf-8 %>
    

    encoding: utf-8 和 coding: utf-8 是等价的。

    希望这会有所帮助。

    【讨论】:

    • 除非文件被正确编码,否则它不会单独工作。显然 Notepad++ 在 Windows XP 之后的任何东西上都存在 unicode 问题:superuser.com/questions/21135/…
    【解决方案3】:

    确保在您的数据库配置中,utf-8 是默认字符集,而不是 latin1。
    如果您使用 MySQL,请在“MySQL 服务器实例配置向导”中更改它。

    编辑:尝试将此代码放入您的应用程序控制器中:

    class ApplicationController < ActionController::Base
    before_filter :set_charset
    
    def set_charset
    @headers["Content-Type"] = "text/html; charset=utf-8"
    end
    end
    

    阅读这篇文章的更多信息:http://www.dotmana.com/?p=95

    【讨论】:

    • 在视图侧启用怎么样?
    • 我收到一条消息说You have a nil object when you didn't expect it! 我认为它无法识别标题
    • 试试response.headers["Content-Type"] = 'text/html; charset=utf-8'
    • 它现在可以识别标题,但是当我将希伯来语添加到视图时仍然出现错误
    【解决方案4】:

    你可以放

    config.encoding = "utf-8"
    

    在你的config/application.rb 中相当于

    Encoding.default_external = Encoding::UTF_8
    Encoding.default_internal = Encoding::UTF_8
    

    这又相当于 put:

    # encoding: UTF-8
    

    或每个文件顶部的 BOM。

    这允许在 Rails 应用程序的所有文件上全局使用 utf-8。 如果你想要所有 ruby​​ 文件的全局选项,你可以使用-Ku ruby​​ 选项并通过RUBYOPT 环境变量设置它,比如:

    export RUBYOPT=-Ku 
    

    【讨论】:

      【解决方案5】:

      这可能是由文件编码本身引起的。确保您已在编辑器/IDE 首选项中将 UTF-8 设置为项目的默认编码。

      编辑:

      您可以使用以下方法检查文件的编码:

      file -I myview.erb.html
      

      (这是一个大写的“i”)。

      【讨论】:

      • 我被否决了,但我仍然鼓励您仔细检查您的文件是否以 UTF8 正确编码。我仍然认为这可能是它。
      • 所以 notepad++ 可能是问题所在 - 似乎编码有问题?正确答案应该奖励 Surelt Kamil?
      猜你喜欢
      • 2015-06-02
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-31
      • 2011-09-19
      相关资源
      最近更新 更多