1
是否有可能讓軌道解碼查詢參數爲utf8。Rails 2.3.9查詢參數的編碼
如果我有這樣的事/富?PARAM =£
我嘗試訪問參數編碼爲ASCII-8BIT在我的控制器參數。這導致許多事情中斷,因爲我們很多其他的字符串被編碼爲UTF-8,而ruby不喜歡混合編碼。
params[:param].encoding == Encoding.find("ASCII-8BIT")
是否有可能讓軌道解碼查詢參數爲utf8。Rails 2.3.9查詢參數的編碼
如果我有這樣的事/富?PARAM =£
我嘗試訪問參數編碼爲ASCII-8BIT在我的控制器參數。這導致許多事情中斷,因爲我們很多其他的字符串被編碼爲UTF-8,而ruby不喜歡混合編碼。
params[:param].encoding == Encoding.find("ASCII-8BIT")
該解決方案從輝煌的文章取自http://jasoncodes.com/posts/ruby19-rails2-encodings
感謝磨傑森風化這個!
如果你在Rails的2.3.x版本系列,你需要創建一個名爲config /初始化/ utf8_params.rb文件有以下內容來解決這個問題
raise "Check if this is still needed on " + Rails.version unless Rails.version == '2.3.10'
class ActionController::Base
def force_utf8_params
traverse = lambda do |object, block|
if object.kind_of?(Hash)
object.each_value { |o| traverse.call(o, block) }
elsif object.kind_of?(Array)
object.each { |o| traverse.call(o, block) }
else
block.call(object)
end
object
end
force_encoding = lambda do |o|
o.force_encoding(Encoding::UTF_8) if o.respond_to?(:force_encoding)
end
traverse.call(params, force_encoding)
end
before_filter :force_utf8_params
end
一定要看看其他的文章中的提示,特別是在視圖中的魔法評論周圍。再次感謝傑森。
在我的情況下,我不得不使用'ActionController :: Base'修補程序'ApplicationController'。我正在使用Rails 2.3.14上運行的Radiant CMS。 –