【问题标题】:Rails 2.3 + Ruby 1.8.7 incompatible character encodings: UTF-8 and ASCII-8BITRails 2.3 + Ruby 1.8.7 不兼容的字符编码:UTF-8 和 ASCII-8BIT
【发布时间】:2012-07-12 21:24:48
【问题描述】:

我在我们的应用程序的 index.rhtml 中遇到了这个问题。基本上,我在页面中有一个动态 div,w/c 显示当前登录用户项目的所有信息。

这是发生错误的sn-p:

<% projects.each do |p| %>
  <tr>
    <td><div><%=h p.location %></div></td> <- ERROR
  ...

注意p.location 只返回一个字符串。

奇怪的是,这个错误不会出现在我的本地应用程序副本中,而只会出现在生产服务器中。我的本地副本使用与生产服务器相同的环境(gems、Ruby 版本、Rails 版本)。

这是我的宝石清单

*** LOCAL GEMS ***
actionmailer (2.3.5)
actionpack (2.3.5)
activerecord (2.3.5)
activeresource (2.3.5)
activesupport (2.3.5)
bcrypt-ruby (2.1.2)
bson (0.20.1)
bundler (1.0.22)
composite_primary_keys (2.3.5.1)
factory_girl (2.5.1)
fastthread (1.0.7)
ferret (0.11.6)
jnunemaker-validatable (1.8.3)
mocha (0.9.8)
mongo (0.19.3)
mongo_mapper (0.7.3)
mysql (2.8.1)
rack (1.0.1)
rails (2.3.5)
rake (0.9.2.2)
redgreen (1.2.2)
rubygems-bundler (0.2.8)
rvm (1.9.2)
thoughtbot-shoulda (2.11.1)

【问题讨论】:

    标签: ruby-on-rails utf-8 ascii ruby-on-rails-2 ruby-1.8.7


    【解决方案1】:

    找到了一种使用 iconv 修复它的 hacky 方法。基本上我强制它使用 utf-8 编码。

    在模型中:

    class Project < ActiveRecord::Base  
    ...
    
      def location
        ::Iconv.conv('UTF-8//IGNORE', 'UTF-8', self[:location] + ' ')[0..-2]
      end
    
    ...
    end
    

    但这仍然没有回答我的问题,为什么我无法在本地复制错误并且它只发生在生产服务器中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 2011-12-14
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2011-03-14
      • 2014-12-11
      • 2011-07-14
      相关资源
      最近更新 更多