Ruby on rails RubyonRails中的HTTP.get编码
我正在做一个简单的获取URL的过程,我得到了一些我无法破解的编码 res_str=Net::HTTP.getURI。parsehttp://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=s%C3%A1lin 我的回答是这样的Ruby on rails RubyonRails中的HTTP.get编码,ruby-on-rails,ruby,encoding,character-encoding,Ruby On Rails,Ruby,Encoding,Character Encoding,我正在做一个简单的获取URL的过程,我得到了一些我无法破解的编码 res_str=Net::HTTP.getURI。parsehttp://suggestqueries.google.com/complete/search?client=youtube&ds=yt&q=s%C3%A1lin 我的回答是这样的 # escape the query q=URI::escape(params["q"]) # prepare request uri = URI.pars
# escape the query
q=URI::escape(params["q"])
# prepare request
uri = URI.parse("http://clients1.google.com/complete/search?client=youtube&q="<<q)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request["User-Agent"] = "Mozilla/5.0"
# make request
response = http.request(request)
# read body
body = response.body
window.google.ac.h[s�林,�林汉斯j�ns m�ns,0],[s�林汉斯
J�ns m�恩斯乌迪尔酒店��号码�hrifum,0],[s�林汉斯j�ns m�ns�� 富尔科姆纳尔
米格,0,,[s]�林,0],[s�林汉斯j�ns m�ns s�D�ma,0],[s�林汉斯
J�ns m�ns hj� ��r、 0],[s�林汉斯j�ns m�纳什瓦尔河
德拉穆林,0,[s]�林汉斯j�ns m�ns原件,0],[s]�林汉斯j�ns
M�ns ef�G�tti,0],[s�林汉斯j�ns m�纳什奥卡
N�tt,0]],{q:A9gr8ZE66_XaaFyUIlaNLEwyxQU,k:1}]
然而,如果我在postman中测试我的url,我会得到我想要的结果
window.google.ac.h[sálin,[[sálin hans jóns míns,0],[sálin hans
约翰·蒙斯·乌迪尔·努姆·赫里夫姆,0],[sálin hans jóns mínsþfullkomnar
米格,0],[sálin,0],[sálin hans jóns míns sódóma,0],[sálin hans
jóns míns hjáþr,0],[sálin hans jóns míns hvar
德拉穆林,0],[sálin hans jóns míns原件,0],[sálin hans jóns
míns efégætti,0],[sálin hans jóns míns okkar
诺特,0]],{q:ecnVzf6wE6HskDep7UOiRxxu5_4,k:1}]
当我执行get in irb时:
res_str=Net::HTTP.getURI。parsehttp://suggestqueries.google.com/complete/search?Client=youtube&ds=yt&q=s%C3%A1lin
我得到以下信息:
window.google.ac.h[\s\xE1lin\,[\s\xE1lin hans j\xF3ns m\xEDns\,0],\s\xE1lin hans j\xF3ns m\xEDns undir\xFE\xEDnum
\xE1hrifum\,0],\s\xE1lin hans j\xF3ns m\xEDns\xFE\xFA fullkomnar
米格\,0],\s\xE1lin \,0],\s\xE1lin hans j\xF3ns m\xEDns
s\xF3d\xF3ma\,0],\s\xE1lin hans j\xF3ns m\xEDns hj\xE1
\xFE\xE9r\,0],\s\xE1lin hans j\xF3ns m\xEDns hvar er
draumurinn\,0],\s\xE1lin hans j\xF3ns m\xEDns
原始\,0],\s\xE1lin hans j\xF3ns m\xEDns ef\xE9g
\xE6tti\,0],\s\xE1lin hans j\xF3ns m\xEDns okkar
n\xF3tt\,0]],{\q\:\zlvsfcfdtebr\u JBE4te2\u XjMOeRs\,\k\:1}]
在执行请求或处理响应以获得真实响应时,我可以做什么
window.google.ac.h[\sálin\,[\sálin hans jóns míns\,0],\sálin hans jóns míns等
解决了这个问题:我只需要设置用户代理就可以接收这样的UTF-8编码结果
# escape the query
q=URI::escape(params["q"])
# prepare request
uri = URI.parse("http://clients1.google.com/complete/search?client=youtube&q="<<q)
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
request["User-Agent"] = "Mozilla/5.0"
# make request
response = http.request(request)
# read body
body = response.body
现在,我将结果正确地发送到浏览器:希望这对某人有所帮助