ボクダイモリ

Life is like a Game

【Ruby 2.2】HTTPでGETリクエストを送ってResponseを表示する

RubyでHTTP通信してみたくて手始めにkakaku.comのトップページのHTMLを取得してみました。

最初に書いたコードはこちら

require 'net/http'
require 'uri'
 
uri = URI.parse('http://kakaku.com/')
 
res = Net::HTTP.get_response(uri)
puts res.body

これを実行するとズラーっとHTML文が出力されると思いますが、このままだと日本語が文字化けして表示されます。 これはkakaku.comがShift-JISで書かれていて、Ruby 2.2は標準の文字コードUTF-8だからです。なのでUTF-8からShift-JISへ変換してから出力する必要があります。 変換は簡単でkconvというライブラリを使うだけです。 文字化けしないように改良したコードが以下の通り

#! ruby -Ku

require 'net/http'
require 'uri'
require 'kconv'
 
uri = URI.parse('http://kakaku.com/')
 
res = Net::HTTP.get_response(uri)
puts Kconv.tosjis(res.body)

これで解決。めでたしめでたし。