require 'optparse' require 'nkf' # Default option params = {output_encoding: 'SJIS', input_encoding: 'AUTO'} opt = OptionParser.new opt.banner = "Usage: #{File.basename(__FILE__, '.rb')} [options]" opt.on("-i", "--input encoding", "(default: #{params[:input_encoding]})") {|v| params[:input_encoding] = v.upcase} opt.on("-o", "--output encoding", "(default: #{params[:output_encoding]})") {|v| params[:output_encoding] = v.upcase} opt.parse!(ARGV) while line = $stdin.gets input_encoding = ('AUTO' == params[:input_encoding] ? NKF.guess(line) : params[:input_encoding]) print line.encode(params[:output_encoding], input_encoding) end