Memoize

BasicWerk   EC Support   Technique   Facebook  

20140817220350_ruby_open_uri_kconv

ruby_open_uri_kconv

 

Web ページの情報を取得する。

open-uri を使う。

 

と、その前に get したページの内容をターミナルに(正常に)表示させるにはエンコードを合わせる必要がある。

 

僕の環境だと、

 
% echo $LANG
ja_JP.UTF-8
 

となっているから、Web ページの charset が UTF-8 以外だと文字化けする可能性がある。

 

そこでエンコード変換モジュールの kconv を併用する。

http_content.rb
 
#! /usr/bin/ruby
# coding: utf-8
 
require 'open-uri'
require 'kconv'
uri = ARGV.first
 
open(uri) do |f|
    content = f.read
    unless f.charset == "utf-8"
        content = content.toutf8
    end
    puts content
end
 

 

f.read の部分が実際にコンテンツの内容を読み込んでるところ。

その後、コンテンツの charset を確認し、UTF-8 でなければ(元が何であろうと)kconv#toutf8 で UTF-8 に変換し、ターミナルで文字化けしないようにしている。

 

例えば、楽天の charset は EUC-JP だが、このスクリプトは問題なく動作する。

 
% http_content.rb "http://www.rakuten.co.jp/"
<!DOCTYPE html>
<html lang="ja" xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#" ... >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-JP">
...
...
<title> 【楽天市場】Shopping is Entertainment! : インターネット最大級の通信販売、...
...
# ・・・以下省略・・・
 

 


© Shin Nakamura/BasicWerk 2014