2020年1月14日には、Windows7の延長サポート期間が終了するため,これを機にWindows10にアップグレードしたり,パソコンを買い替えたりする機会が増えます。
OSやパソコン本体を変更した際,これまで使用できていた日本語のファイル名のプログラムやバッチファイル(batファイル)が,文字化けにより使用できなくなる場合がありましたので,その対処方法をシェアします。
目 次
1. プログラム実行時に発生した文字化け(問題)
私の場合は,「Fortran」という言語で作成したプログラムについて,使用するファイル名に日本語を用いた場合に文字化けが生じました。例えば,以下の場合です。
なお,使用するパソコンには,コンパイラがインストールされている前提です。私の場合は「gfortran」というフリーのコンパイラをインストールしました(gfortranの設定方法は,例えばコチラ)。
- プログラムファイルは「テスト.f90」,コンパイル・実行には「Run.bat」というバッチファイル(batファイル)を用いることとします。
![今回使用するプログラムファイル(テスト.f90)とバッチファイル(Run.bat)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/43a7b1081f34780987592c66f26b2924.jpg?resize=680%2C401&ssl=1)
- プログラムファイル「テスト.f90」のコードは以下のとおり,「— Hello World —」を画面に出力するだけのプログラムです。このプログラムファイル名に日本語の「テスト」が入っているため文字化けが生じ,コンパイル・実行ができませんでした。
- インプットファイル等に日本語を含む場合でも,同様に文字化けが生じます。
![プログラムファイルのコード(テスト.f90)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/89e99ea8423f658b0c748c13df490f64.jpg?resize=695%2C242&ssl=1)
- プログラムの実行は,「Run.bat」というバッチファイル(batファイル)から行うようにしました。1行目は「gfortran」でコンパイルするためのものであり,コンパイラによっては記載方法を変更する必要があります。なお,バッチファイルの説明は省略しますが,ここではコンパイル,実行をコマンドプロンプトに直接入力するのではなく,バッチファイルを使って効率的に作業しているだけです。
![バッチファイル(Run.bat)のコード](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/01fd7070f3ec98f1eb5965a0b408b546.jpg?resize=693%2C244&ssl=1)
- このバッチファイル(batファイル)をダブルクリックして実行すると,以下のとおりエラーが生じており,画面には「— Hello World —」は表示されませんでした。
![プログラム実行時のエラーメッセージ(文字化けが生じている)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/5360bdacb80187a22d42a59135a4530a.jpg?resize=711%2C283&ssl=1)
- これらのプログラムファイルとバッチファイル(batファイル)は,「秀丸」というシェアソフトのエディタを使っています。Windowsに標準装備されている「メモ帳」やフリーソフトの「Notepad++」などのエディターを使っても,以降で説明する解決方法を活用可能です。
2. 文字化けした場合の対処方法(解決策)
この文字化け問題は,使用するプログラムファイル「テスト.f90」とバッチファイル「Run.bat」が,日本語対応していないフォント「UTF-8」で保存されていることが原因でした。
その場しのぎ的な対応としては,ファイル名を英数字にする方法もありますが,今回は根本的な解決策として,以下の方法により,日本語対応のフォント「日本語(Shift-JIS)」に変更しました。
- 今回使用しているエディタの「秀丸」の場合は,「テスト.f90」と「Run.bat」のファイルを開いて右下にある部分をクリックし,「日本語(Shift-JIS)」に変更します。
- なお,使用するエディタによっては,「日本語(Shift-JIS)」がない場合は,別の日本語フォントを選択します。例えば,「メモ帳」を使用する場合は,ファイル → 名前を付けて保存 → 文字コードを「ANSI」に選択 → 保存 をクリックすることで,同様のことが可能です。
- また,「Notepad++」というエディターであれば,エンコード → 文字セット → 日本語 → Shift-JIS で設定できます。
- ファイル名やコードは,変更する必要がありません。(書式のみ変更が必要)
![変更したプログラムファイルのコードの書式(テスト.f90)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/82953b6f7e5e9241f89836b3626a0354.jpg?resize=714%2C256&ssl=1)
![変更したバッチファイルのコードの書式(Run.bat)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/0f4c453b006cfceba7f1c83cecbd7ca5.jpg?resize=724%2C260&ssl=1)
- さきほどと同様にバッチファイル(Run.bat)をダブルクリックして,プログラムをコンパイル・実行すると,以下のとおり「— Hello World —」が表示されました。問題なくプログラムが実行されました。
![プログラムの実行結果(コマンドプロンプトの画面)](https://i0.wp.com/diversification-blog.com/wp-content/uploads/2020/01/d4d94e3bb0fffb87cb9ef225d7192d3b.jpg?resize=650%2C268&ssl=1)
3. まとめ
プログラムのコンパイル・実行時に文字化けが生じた場合の要因,解決方法のまとめは,以下の通りです。
- OSやパソコン本体を変更した場合に生じるプログラム実行時の文字化けは,そのプログラムファイルやバッチファイル(batファイル)の書式が日本語対応していないことが原因です。
- 根本的な解決策としては,エディタでそのプログラムファイル・バッチファイルを開き,「Shift-JIS」や「ANSI」等の日本語対応の書式で上書き保存することで解決できます。