[Ruby] open-uri で utf-8 以外のページを文字変換して取得する
続き。
[markdown]
> * [open-uri で https と basic 認証を越えてページを取得する | deadwood](https://www.d-wood.com/blog/2015/04/09_7468.html)
ターゲットが euc-jp だった場合の例。
mode を指定して読み込めるとのこと。
> * [Route 477(2011-01-19)](http://route477.net/d/?date=20110119)
“`ruby
begin
html = open(uri, ‘r:euc-jp’,
{:http_basic_authentication => [USER, PASSWORD],
:ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE}).read.encode(‘utf-8’)
“`
参考資料。
> * [module OpenURI](http://docs.ruby-lang.org/ja/2.2.0/class/OpenURI.html)
> * [module function Kernel.#open](http://docs.ruby-lang.org/ja/2.2.0/method/Kernel/m/open.html)
## 補遺
memo.
`.charset` で文字種別がとれるようだ。
> * [Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル] – 酒と泪とRubyとRailsと](http://morizyun.github.io/blog/ruby-nokogiri-scraping-tutorial/)
“`ruby
open(uri) do |f|
charset = f.charset # 文字種別を取得
end
“`
Shift_JIS は、CP932指定とのこと。
> * [Ruby – Shift_JISサイトをNokogiriでパースするときにはエンコード指定(CP932指定推奨) – Qiita](http://qiita.com/riocampos/items/72b86103aa08532a5b30)
OpenURI も Net::HTTP も charset をキレイにはとれないのかな。
> * [Feature #2567: Net::HTTP does not handle encoding correctly – Ruby trunk – Ruby Issue Tracking System](https://bugs.ruby-lang.org/issues/2567)
[/markdown]