簡體   English   中英

Rails 2.3 + Ruby 1.8.7不兼容的字符編碼:UTF-8和ASCII-8BIT

[英]Rails 2.3 + Ruby 1.8.7 incompatible character encodings: UTF-8 and ASCII-8BIT

我在應用程序的index.rhtml中遇到了這個問題。 基本上,我在頁面中有一個動態div,其中w / c顯示了當前已登錄用戶項目的所有信息。

這是發生錯誤的代碼段:

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

注意, p.location僅返回一個字符串。

奇怪的是,此錯誤不會在我的應用程序本地副本中彈出,而只會在生產服務器中出現。 我的本地副本使用與生產服務器相同的環境(寶石,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)

找到了一種使用iconv修復該漏洞的方法。 基本上,我將其強制為utf-8編碼。

在模型中:

class Project < ActiveRecord::Base  
...

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

...
end

但這仍然沒有回答我的問題,為什么我不能在本地復制錯誤,而只在生產服務器中發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM