初めてファラデーを使用するので、間違ったことをしている可能性がありますが、以下の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
を提供するように強制する方法が見つかりません
これに対する好ましい解決策は何ですか?
同じ問題が発生しました。 何か案は?
Faradayは、基になるアダプターから応答本文を渡すだけだと確信しています。 ファラデーでエラーを発生させたり、データの不可逆変換を実行したりするかどうかはわかりません。 本当に必要な場合は、カスタムミドルウェアで実行できます。
けっこうだ。 問題が他の場所にある場合は、表示されているように、時間内にクリーンアップされると思います。 それは私にとってショーストッパーではありません。
ファラデーのバグではないので終了します。
基盤となるアダプター(少なくともnet / http)がエンコード変換を行うかどうかはわかりません。 RubyのEncoding.default_externalを 'US-ASCII'のようなものに設定してから、Content-Type = '...;でエンドポイントをヒットすることができます。 charset = utf-8 '... net / httpは、charset文字列を
これについてさらに調査しました-基盤となるアダプターの一部はContent-Type文字セットを処理しますが、処理しないものもあります。
EM-HTTP-Requestはそうします。 [コミット]。
パトロンはそうします。 [コミット]。
HTTPClientは[[commit](https://github.com/nahi/httpclient/commit/e5efea5afb3b5cf6ead3a131644dee71be1ee5e9)] [[issue](https://github.com/nahi/httpclient/issues/26)]を実行します。
TyphoeusとExcon(およびnet / http)は表示されません。
おそらく、試さないアダプター用のオプションのミドルウェアを提供するのが最も良いことだと思いますが、ええ、私は同意します。これはおそらくファラデーの責任ではないはずです。
@chrismoあなたは私のヒーローです。 その研究をしてくれてありがとう!
最も参考になるコメント
私が使用した回避策は次のとおりです。
ヤフダはここで問題についての論文を持ってい