ํจ๋ฌ๋ฐ์ด๋ฅผ ์ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์์
์ ์ํํ ์ ์์ง๋ง ๋ค์์ 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์์๋ REXML์ด Encoding::CompatibilityError
์ํต๋๋ค.
ํจ๋ฌ๋ฐ์ด๊ฐ UTF-8๋ก response.body
๋ฅผ ์ ๊ณตํ๋๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค.
์ด์ ๋ํ ์ ํธ ์๋ฃจ์ ์ ๋ฌด์์ ๋๊น?
๋ฐฉ๊ธ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
๋ด๊ฐ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
response.body.force_encoding('utf-8')
Yahuda๋ ์ฌ๊ธฐ ์ ๋ฌธ์ ์ ๋ํ ๋ ผ๋ฌธ์ ๊ฐ์ง๊ณ
Faraday ๊ฐ ๊ธฐ๋ณธ ์ด๋ํฐ์์ ์๋ต ๋ณธ๋ฌธ
๊ทธ๋ด ์ ์์ง. ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์์ผ๋ฉด ๋ํ๋๋ ๋๋ก ์๊ฐ์ด ์ง๋๋ฉด ํด๊ฒฐ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์ผ ์คํ ํผ๊ฐ ์๋๋๋ค.
Faraday์ ๋ฒ๊ทธ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋ซ์ต๋๋ค.
๊ธฐ๋ณธ ์ด๋ํฐ(์ ์ด๋ net/http)๊ฐ ์ธ์ฝ๋ฉ ๋ณํ์ ์ํํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Ruby์ Encoding.default_external์ 'US-ASCII'์ ๊ฐ์ ๊ฒ์ผ๋ก ์ค์ ํ ๋ค์ Content-Type = '...; charset=utf-8' ... net/http๋ charset ๋ฌธ์์ด ์
์ด์ ๋ํด ์ข ๋ ์กฐ์ฌํ์ต๋๋ค. ๊ธฐ๋ณธ ์ด๋ํฐ ์ค ์ผ๋ถ๋ Content-Type charset์ ์ฒ๋ฆฌํ๊ณ ์ผ๋ถ๋ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค.
EM-HTTP-์์ฒญ ์ ์ํํฉ๋๋ค. [ ์ปค๋ฐ ].
ํ์์๋ ์์ต๋๋ค. [ ์ปค๋ฐ ].
HTTPClient๋ [[commit](https://github.com/nahi/httpclient/commit/e5efea5afb3b5cf6ead3a131644dee71be1ee5e9)] [[issue](https://github.com/nahi/httpclient/issues/26)]ํฉ๋๋ค.
Typhoeus์ Excon(๊ทธ๋ฆฌ๊ณ net/http)์ ๋ํ๋์ง ์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ์๋ํ์ง ์๋ ์ด๋ํฐ๋ฅผ ์ํ ์ ํ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด๊ฒ ์ง๋ง, ๋ค, ๋์ํฉ๋๋ค. ์ด๊ฒ์ ์๋ง๋ Faraday์ ์ฑ ์์ด ์๋ ๊ฒ์ ๋๋ค.
@chrismo ๋น์ ์ ๋์ ์์ ์ ๋๋ค. ์กฐ์ฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด๊ฐ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Yahuda๋ ์ฌ๊ธฐ ์ ๋ฌธ์ ์ ๋ํ ๋ ผ๋ฌธ์ ๊ฐ์ง๊ณ