mychcp.exeを作ります。
実行するとシフトJISならUTF8、UTF8ならシフトJISに変えます。
chcpの引数の数値を毎回検索するのは面倒。
環境変数を使うっていう手もあります。
set u=65001
set j=932
とでもしておいて、chcp %j%とかchcp %u%でできます。
もうちょっとchcpのヘルプでコードの番号を表示してくれればいいのですが以下ですから。
何でほしくなったかというとPythonがutf8でないといけない。それだけです。
さて、exe化ですが。
好きなrubyでexe化しようと思いましたがなかなかです。ocraとnariを使ってみましたが最新版の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の実行結果です。