chcpコードページ簡単変更プログラム

mychcp.exeを作ります。

実行するとシフトJISならUTF8、UTF8ならシフトJISに変えます。

chcpの引数の数値を毎回検索するのは面倒。

環境変数を使うっていう手もあります。

set u=65001
set j=932

とでもしておいて、chcp %j%とかchcp %u%でできます。

もうちょっとchcpのヘルプでコードの番号を表示してくれればいいのですが以下ですから。

何でほしくなったかというとPythonがutf8でないといけない。それだけです。

さて、exe化ですが。

好きなrubyでexe化しようと思いましたがなかなかです。ocranariを使ってみましたが最新版のRubyでは無理?

Pythonなら圧倒的なユーザー数ですからやってみました。以下のファイルはmychcp.pyとして保存します。

import os

os.system("chcp > .cc.txt")
f=open(".cc.txt","r")
ss=f.read()
f.close()
os.system("del .cc.txt")
s=ss.split() #array
if s[2] == "932":
    os.system('chcp 65001')
    print("utf8")
else:
    os.system('chcp 932')
    print("ShiftJIS")

#print(s[0]) #debug
#print(s[1]) #debug
#print(s[2]) #debug

Windowsのコマンドプロンプトでchcpを実行すると以下のようになる。

os.system(“chcp > .cc.txt”)で、chcp >とリダイレクトを使ってコンソールの表示をcc.txtファイルに保存する。つまり、.cc.txtには「現在のコード ページ: 932」が保存されている。このファイルをopenして、全部呼び込むf.read。ss変数には「現在のコード ページ: 932」が入っていて、split関数でスペース区切りでs変数に配列が入る。s[0]には「現在のコード」がs[1]には「ページ:」が、s[2]には「932」が入る。

if文では、シフトJIS(932)ならutf8(65004)に変更し、シフトJIS(932)で無いならelseの方をos.system(‘chcp 932’)実行する。

pyinstallerをインストールします。これがEXE化のライブラリです。Pythonはライブラリが豊富でいろいろあるが、これが有名かと。

コンソールからpip install pyinstallerとします。インストールできたら、

exe作成は、pyinstaller -F mychcp.pyです。

実行したフォルダ下にdistフォルダができてます。この中にmychcp.exeがあります。WindowsのPCならmychcp.exeファイル単体で動きます。

mychcp.exeの実行結果です。