【问题标题】:Rails 3 ActiveResource not escaping unicode in xml when sending request发送请求时,Rails 3 ActiveResource 未在 xml 中转义 unicode
【发布时间】:2013-04-09 23:12:10
【问题描述】:

我们最近迁移到了 rails 3.2.13。我们使用 ActiveResource 来调用 Web 服务。 ActiveResoure 将生成 xml 有效负载。我们注意到新的 xml 不会转义 unicode 字符。例如:

&ltname&gt C:\Documents and Settings\所有用户\testütestdev1.txt &lt/name&gt

在 rails 2.3 中,它会将 ü 转义为 ü :

&ltname&gt C:\Documents and Settings\所有用户\testütestdev1.txt &ltname&gt

经过一番调查。看起来这是由于 ActiveSuppport to_xml 方法没有转义 unicode 字符。有没有人遇到过这个问题并知道如何解决?

【问题讨论】:

    标签: ruby ruby-on-rails-3 activeresource activesupport


    【解决方案1】:

    您可以为此使用Rack::Utils

    > Rack::Utils.escape("  <name> C:\Documents and Settings\All Users\testütestdev1.txt </name>")
    #=> "++%3Cname%3E+C%3ADocuments+and+SettingsAll+Users%09est%C3%BCtestdev1.txt+%3C%2Fname%3E"
    
    > Rack::Utils.unescape(_)
    #=> "  <name> C:Documents and SettingsAll Users\testütestdev1.txt </name>"
    

    【讨论】:

    • 但问题是我们自己无法进行转义,因为我们正在使用 active_resource 进行 Web 服务调用,该调用将生成 xml。
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2014-03-12
    • 1970-01-01
    • 2016-04-18
    • 2015-06-10
    相关资源
    最近更新 更多