【问题标题】:Ruby Parsing: Error when I trying to put Cyrillic symbols into URL requestRuby Parsing:尝试将西里尔符号放入 URL 请求时出错
【发布时间】:2017-09-17 18:07:18
【问题描述】:

我为 Telegram 编写了一个 Bot,用户可以在其中接收请求的图像。但是有一个问题我无法解决。

在 Ruby 上进行解析的一些示例:

json_object = JSON.parse(open("https://api.site.com/search/photos?query=" + message.text + "&per_page=10&client_id=42324d2lkedi234fs342dfse2c038fdfsdfs").read)

message.text - 这是一个用户请求的字段。

拉丁文字一切正常,但是当我发送西里尔文(API 也支持西里尔字母)符号时,我收到以下错误:

/Users/me/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/uri/rfc3986_parser.rb:21:in `split': URI 只能是 ascii “https://api.site.com/search/photos?query=\u0432\u0430\u0432\u0430&per_page=10&client_id=42324d2lkedi234fs342dfse2c038fdfsdfs” (URI::InvalidURIError)

我使用 utf-8 和 win-1252 编码,但没有任何帮助。应该如何解决?

【问题讨论】:

    标签: ruby-on-rails json ruby parsing cyrillic


    【解决方案1】:

    你应该编码你的西里尔字符串:

    URI.encode('http://google.com?1=АБВ') # => "%D0%90%D0%91%D0%92"
    

    所以,像这样使用它(或编码整个 url):

    URI.encode(message.text)
    

    【讨论】:

      【解决方案2】:

      试试

      "anything".parameterize.underscore.humanize.downcase
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-31
        • 2016-05-10
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多