【问题标题】:rails encoding issue =(rails编码问题=(
【发布时间】:2010-12-09 07:54:17
【问题描述】:

我使用带有 ruby​​ 1.9.2 的 rails 2.3.9,当我尝试用一​​些俄语字母更新我的模型时,我在独角兽日志中出现错误:

Error during failsafe response: incompatible character encodings: UTF-8 and ASCII-8BIT
Read error: #<NoMethodError: undefined method `[]' for nil:NilClass>

跟踪看起来像这样:

/home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:521:in process_client' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:594:in block in worker_loop' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:592:in each' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:592:in worker_loop' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:482:in block (2 levels) in spawn_missing_workers' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:479:in fork' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:479:in block in spawn_missing_workers' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:475:in each' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:475:in spawn_missing_workers' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:489:in maintain_worker_count' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn/http_server.rb:299:in join' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/lib/unicorn.rb:13:in run' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/gems/unicorn-3.0.1/bin/unicorn_rails:208:in <top (required)>' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/bin/unicorn_rails:19:in load' /home/rbdev/.rvm/gems/ruby-1.9.2-p0@rails2/bin/unicorn_rails:19:in `'

所以,我无法确定问题,我唯一知道的 - 俄罗斯文本中有什么问题(当我用英文字母更新模型时 - 一切正常。我能做什么?(

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您应该确保您的编辑器以 UTF-8 格式保存文件。 ASCII afaik 是任何字符集的第一部分。这应该是您在省略俄罗斯字符时不会收到任何错误的原因。

    【讨论】:

    • rbdev@Ubuntu-1004-lucid-64-minimal:~/sites/avantage/app/views/admin/categories$ file -i edit.html.haml edit.html.haml: text/清楚的; charset=us-ascii
    【解决方案2】:

    我在这里用脚本回答了这个问题。 Why are all strings ASCII-8BIT after I upgraded to Rails 3?

    你需要

    # coding: UTF-8
    

    在您的文件顶部,使用 ruby​​ 1.9。如果这没有帮助,则可能是您的外部依赖项,例如 DB。

    【讨论】:

      【解决方案3】:

      你可以使用 gem "russian" (gem 基于 l18n) https://github.com/yaroslav/russian 在模型中(而不是俄文字母): 俄语::translate(:some_word)

      在配置文件中(必须以 UTF-8 编码): 茹: some_word: 'это строка с русскими буквами(这是带有俄语字母的字符串)'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        • 1970-01-01
        • 2023-03-26
        • 1970-01-01
        相关资源
        最近更新 更多