Ruby 解析:当我尝试将西里尔符号放入 URL 请求时出错
Ruby Parsing: Error when I trying to put Cyrillic symbols into URL request
我为 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 must be ascii only
"https://api.site.com/search/photos?query=\u0432\u0430\u0432\u0430&per_page=10&client_id=42324d2lkedi234fs342dfse2c038fdfsdfs"
(URI::InvalidURIError)
我使用了 utf-8 和 win-1252 编码,但没有任何帮助。这应该如何解决?
您应该对您的西里尔字符串进行编码:
URI.encode('http://google.com?1=АБВ') # => "%D0%90%D0%91%D0%92"
所以,像这样使用它(或编码整个 url):
URI.encode(message.text)
试试
"anything".parameterize.underscore.humanize.downcase
我为 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 must be ascii only "https://api.site.com/search/photos?query=\u0432\u0430\u0432\u0430&per_page=10&client_id=42324d2lkedi234fs342dfse2c038fdfsdfs" (URI::InvalidURIError)
我使用了 utf-8 和 win-1252 编码,但没有任何帮助。这应该如何解决?
您应该对您的西里尔字符串进行编码:
URI.encode('http://google.com?1=АБВ') # => "%D0%90%D0%91%D0%92"
所以,像这样使用它(或编码整个 url):
URI.encode(message.text)
试试
"anything".parameterize.underscore.humanize.downcase