コマンドプロンプトでUTF-8などSJIS以外の文字を表示する方法


コマンドプロンプトで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
カテゴリー: 記事 タグ: , , パーマリンク

コメントを残す