【问题标题】:Rails check if URL is already encodedRails 检查 URL 是否已经编码
【发布时间】:2014-12-16 11:19:38
【问题描述】:

我正在使用 URI.encode 对我的 rail 应用程序中的 url 进行编码。但有时这些 url 可能已经编码,我不想再次编码它们。我可以在这里看到一种解决方案:How to find out if string has already been URL encoded?

但是,想知道在 ruby​​ 中是否已经有任何 API 可用于执行此操作?

也正如https://stackoverflow.com/a/2295286/1475737 中所建议的那样,正在解码字符串并使用原始解决方案检查其长度?

感谢任何建议!

【问题讨论】:

    标签: ruby-on-rails ruby url-encoding


    【解决方案1】:

    'uri' 模块有一个正则表达式,其中包含应为 URI 编码转义的字符列表:

    require 'uri'
    
    URI::REGEXP::UNSAFE
    
    => /[^-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]]/n
    

    因此一种解决方案是测试给定的字符串是否与此正则表达式匹配并仅在匹配时对其进行编码。

    【讨论】:

    • 这似乎没有为 ruby​​ 1.9.3 定义:(.
    • 是的。事实上,'uri.encode' 已被弃用,而应使用 'cgi' 模块。遗憾的是,CGI 没有提供类似的常量。
    • 另外,这里也建议stackoverflow.com/a/2295317/1475737,但它也有一个不起作用的例子。
    • 这已在 1.9.3 中重建您可以尝试以下操作:URI::Parser.new.pattern 但不确定是否返回你想要什么......
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2011-04-21
    • 2015-04-18
    • 2015-03-26
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多