gpt4 book ai didi

ruby-on-rails - 带有 Rails 闪存消息的 UTF-8 中的无效字节序列

转载 作者:行者123 更新时间:2023-12-04 04:47:01 26 4
gpt4 key购买 nike

我们为我们的在线商店使用 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

有人可以告诉我,如何解决这个问题?该错误应包含德语 ä而不是 \xE4 .我试过设置 # encoding: utf-8到 Controller 和 View 的开头,但这无济于事。

最佳答案

“显然,您的支付服务提供商使用 ISO-8859-1 或类似标准来发送德语变音。
由于您的 rails 应用程序使用 UTF-8,因此您可以转换提供者的消息。

假设您将消息存储在变量 msg 中,请使用

utf_msg = params[:errormsg].force_encoding('ISO-8859-1').encode('UTF-8')

您还可以检查结果编码是否有效:
uft_msg.valid_encoding?

并输出不同的消息以避免错误。

关于ruby-on-rails - 带有 Rails 闪存消息的 UTF-8 中的无效字节序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18030780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com