我们为我们的在线商店使用 Rails 3 和 Spree Commerce,并且我们有一个支付提供商,如果发生某些错误,它会在重定向 URL 中返回错误。当发生错误时,我们会将该字符串与 Flash 消息一起呈现给用户。
昨天,有些东西不起作用,支付提供商在重定向 URL 中返回了这个字符串,它应该在一个 flash 消息中呈现给用户:
errormsg=Bitte+versuchen+Sie+es+sp%E4ter+nochmals.
我调试了一下,解码时字符串看起来像这样(例如写入flash[:error]):
Bitte versuchen Sie es sp\xE4ter nochmals.
之后,当 rails 尝试渲染 flash 消息时,会引发错误:
invalid byte sequence in UTF-8
有人可以告诉我,如何解决这个问题?错误应该包含一个 Germanä
而不是\xE4
. 我尝试设置# encoding: utf-8
到控制器和视图的开头,但这没有帮助。