コマンドプロンプトでShift_JIS以外の文字を表示する場合、chcp コマンドを利用すると思います。以前はそれで一応表示できたのですが、最近試したところ期待通りに表示されませんでした。そこで、パイプ処理で文字コードを変換するスクリプトを作りました。
使い方
次のようにパイプで ce コマンドに出力を渡すだけです。 ce コマンドが文字コードを自動判定し、Shift_JIS に変換後に表示します。
> some_output_utf-8_command.exe | ce
ce は convert encoding の略です。
※ce.rb を PATH の通っているフォルダに置いておく必要があります。
標準エラー出力も変換対象にするには次のように実行します。
> some_output_utf-8_command.exe 2>&1 | ce
ダウンロード
Rubyスクリプトを実行するにはあらかじめRubyをインストールしておく必要があります。
http://www.ruby-lang.org/ja/downloads/#label-1
ソースコード
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