Ruby on rails 字符集和POST请求
我有一个Rails 2.3.5应用程序,可以很好地处理UTF-8和国际字符。现在我已经对一个支付网关进行了一些集成,在那里我发布了一些数据,等待一段时间,然后得到一个回复。问题是,当我得到那篇文章的时候,国际角色被打破了。我得到的不是瑟伦森,而是瑟伦森。如果我使用iconv-t ISO-8859-1-f UTF8,它会正确地转换为前者,我可以在OSX命令提示符下执行此操作。我已经在控制器中使用logger.inforequest.headers.inspect检查了POST请求,可以看到没有给出任何字符集参数 根据他们的说法,来自网关的帖子应该是ISO-8859-1——Rails认为这是UTF8的问题吗?这与我看到的问题一致吗 我知道一个解决方案是在控制器中使用Iconv简单地转换参数散列,但我想知道发生了什么 提前谢谢 问候,Ruby on rails 字符集和POST请求,ruby-on-rails,character-encoding,http-headers,Ruby On Rails,Character Encoding,Http Headers,我有一个Rails 2.3.5应用程序,可以很好地处理UTF-8和国际字符。现在我已经对一个支付网关进行了一些集成,在那里我发布了一些数据,等待一段时间,然后得到一个回复。问题是,当我得到那篇文章的时候,国际角色被打破了。我得到的不是瑟伦森,而是瑟伦森。如果我使用iconv-t ISO-8859-1-f UTF8,它会正确地转换为前者,我可以在OSX命令提示符下执行此操作。我已经在控制器中使用logger.inforequest.headers.inspect检查了POST请求,可以看到没有给出
Jacob您能否验证请求头是否在POST中设置正确。您可以在以下链接中看到可接受的值 我最后做了这样一件事: 在模型中:
FIELDS_TO_FIX=[:name, :city, :address]
# DIBS sucks and sends UTF8 in some strange encoding. So we have to do an array.pack on
# strings when posting to DIBS and unpack them at callback.
#
def self.fix_encoding(params)
FIELDS_TO_FIX.each do |f|
next if params[f].nil?
params[f]=params[f].unpack("M")[0].force_encoding("UTF-8")
end
params
end
在控制器的创建操作中:
params[:booking]=Booking.fix_encoding(params[:booking])
并认为向外部资源发布的帖子:
<input type="hidden" name="booking[name]" value="<%= [@booking.name].pack("M") %>" />
我希望它能帮助别人。我有确切的问题。轨道3.2。你找到解决方案了吗?我找到了-我贴了一个答案和解决方案。我希望有帮助。