[Ruby]文字列をロケールのエンコーディングに変換する (1.9以上対象)

ファイル名など、システムのロケールに依存する文字列を出力する場合、スクリプト内にエンコーディング名を決め打ちしていると移植性が低下してしまうので、実行時にエンコード名を指定したい。
システムのロケールで設定されているエンコーディング名は Encoding.locale_charmap で取得できる。
"文字列".encode(Encoding.locale_charmap)
このようにして、ロケールのエンコーディングに変換された文字列を簡単に取得できる。

[Ruby]Web上のファイルを直接開く

Web上のファイルを直接開いて読み込むだけの単純な処理の場合、 net/http を使って長いコードを書かなくても、 open-uri を使うことで簡単にファイルを取得し通常のIOと同様に読み込むことができる。ハッシュの形で引数を指定することで、リクエストヘッダなどのオプションを指定できる。

例:
require 'open-uri'
  
open("http://example.com/hoge.html", "Referer" => "http://example.com/") {|file|
  puts file.read()
}
HTTPSの場合も同様に使うことができる。ただし、Ruby 1.9以上でHTTPSのページを開こうとすると、このようなエラーが出ることがある。

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

この場合は以下のように :ssl_verify_mode オプションを指定すればよい。指定する値は OpenSSL::SSL::SSLContext#verify_mode= と同じである。サーバーの証明書を検証する必要がなれば、 OpenSSL::SSL::VERIFY_NONE で大丈夫である。
open("https://example.com/", :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE) {|file|
  puts file.read()
}
この場合もヘッダ等のオプションは同様に指定できる。