рдкрд╣рд▓реА рдмрд╛рд░ рдлреИрд░рд╛рдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ response.body
рдПрдиреНрдХреЛрдбрд┐рдВрдЧ ASCII-8BIT рд╣реИ:
def self.search(term)
connection = Faraday.new(url: 'https://en.wikipedia.org')
response = connection.get do |req|
req.options = { :timeout => 5, :open_timeout => 3 }
req.url '/w/api.php' , action: 'opensearch', format: 'xml', search: term
end
puts response.body.encoding
end
1.9.2 рдореЗрдВ рдпрд╣ рдЖрд░рдИрдПрдХреНрд╕рдПрдордПрд▓ рдХреЛ Encoding::CompatibilityError
рдлреЗрдВрдХрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред
рдореБрдЭреЗ рдпреВрдЯреАрдПрдл -8 рдореЗрдВ рдлреИрд░рд╛рдбреЗ рдХреЛ response.body
рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдЗрд╕рдХрд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рдорд╛рдзрд╛рди рдХреНрдпрд╛ рд╣реИ?
рдмрд╕ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:
response.body.force_encoding('utf-8')
рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣реБрджрд╛ рдХрд╛ рдПрдХ рд╢реЛрдз рдкреНрд░рдмрдВрдз
рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рдлреИрд░рд╛рдбреЗ рд╕рд┐рд░реНрдл рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдбреЗрдкреНрдЯрд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рдкрд░ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдлреИрд░рд╛рдбреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрдард╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╣рд╛рдирд┐рдкреВрд░реНрдг рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдХрд╕реНрдЯрдо рдорд┐рдбрд▓рд╡реЗрдпрд░ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрд╛рдлреА рдЙрдЪрд┐рддред рдпрджрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рдордп рдкрд░ рд╕рд╛рдл рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╢реЛ рд╕реНрдЯреЙрдкрд░ рдирд╣реАрдВ рд╣реИред
рдмрдВрдж рдХрд░рдирд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдлреИрд░рд╛рдбреЗ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдмрдЧ рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдбрд╛рдкреНрдЯрд░ - рдХрдо рд╕реЗ рдХрдо рдиреЗрдЯ/http - рдХреЛрдИ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИред рдЖрдк рд░реВрдмреА рдХреЗ Encoding.default_external рдХреЛ 'US-ASCII' рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдкрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ Content-Type = '...; charset=utf-8' ... net/http рд╡рд░реНрдгрд╕реЗрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХрд░рд╛рдПрдЧрд╛ , рд▓реЗрдХрд┐рди рдмреЙрдбреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреЗрдЯ/http рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ ParseJson рдорд┐рдбрд▓рд╡реЗрдпрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдЙрдбрд╝рд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдкрд░ рдХреБрдЫ рдФрд░ рд╢реЛрдз рдХрд┐рдпрд╛ - рдХреБрдЫ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдПрдбреЗрдкреНрдЯрд░ рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдгрд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ, рдХреБрдЫ рдирд╣реАрдВ:
EM-HTTP-рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред [ рдкреНрд░рддрд┐рдмрджреНрдз ]ред
рд╕рдВрд░рдХреНрд╖рдХ рдХрд░рддрд╛ рд╣реИред [ рдкреНрд░рддрд┐рдмрджреНрдз ]ред
HTTPClient рдХрд░рддрд╛ рд╣реИ [[рдкреНрд░рддрд┐рдмрджреНрдз](https://github.com/nahi/httpclient/commit/e5efea5afb3b5cf6ead3a131644dee71be1ee5e9)] [[рдореБрджреНрджрд╛](https://github.com/nahi/httpclient/issues/26)]ред
рдЯрд╛рдЗрдлрд┐рдпрд╕ рдФрд░ рдПрдХреНрд╕рдХреЙрди (рдФрд░ рдиреЗрдЯ/рдПрдЪрдЯреАрдЯреАрдкреА) рдирд╣реАрдВ рджрд┐рдЦрддреЗред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╢рд╛рдпрдж рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╣рд╛рдБ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рд╢рд╛рдпрдж рдлреИрд░рд╛рдбреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ https://github.com/qhwa/string_utf8
@chrismo рддреБрдо рдореЗрд░реЗ рд╣реАрд░реЛ рд╣реЛред рдЙрд╕ рд╢реЛрдз рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:
рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣реБрджрд╛ рдХрд╛ рдПрдХ рд╢реЛрдз рдкреНрд░рдмрдВрдз