Faraday: рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.рдмреЙрдбреА ASCII-8BIT рд╣реИ рдЬрдм рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░ рдЯреЗрдХреНрд╕реНрдЯ/рдПрдХреНрд╕рдПрдордПрд▓ рд╣реИ; рд╡рд░реНрдгрд╕реЗрдЯ = utf-8

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдЕрдкреНрд░реИрд▓ 2012  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: lostisland/faraday

рдкрд╣рд▓реА рдмрд╛рд░ рдлреИрд░рд╛рдбреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ 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')

рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣реБрджрд╛ рдХрд╛ рдПрдХ рд╢реЛрдз рдкреНрд░рдмрдВрдз

рд╕рднреА 9 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрд╕ рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

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)]ред
рдЯрд╛рдЗрдлрд┐рдпрд╕ рдФрд░ рдПрдХреНрд╕рдХреЙрди (рдФрд░ рдиреЗрдЯ/рдПрдЪрдЯреАрдЯреАрдкреА) рдирд╣реАрдВ рджрд┐рдЦрддреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╢рд╛рдпрдж рдПрдбреЗрдкреНрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╣рд╛рдБ, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ, рдпрд╣ рд╢рд╛рдпрдж рдлреИрд░рд╛рдбреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@chrismo рддреБрдо рдореЗрд░реЗ рд╣реАрд░реЛ рд╣реЛред рдЙрд╕ рд╢реЛрдз рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ryanbyon picture ryanbyon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jedeleh picture jedeleh  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

yusefu picture yusefu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amrrbakry picture amrrbakry  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

asf-stripe picture asf-stripe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ