GCCで作成したプログラムをWindows環境で実行時に文字化けする場合

Windows のコマンドプロンプトで C 言語のプログラムを GCC を使ってコンパイルをしたあとで実行すると printf 関数で日本語と出力する場合に出力結果が文字化けする場合があります。ここでは Windows 環境で GCC を使って作成したプログラムの実行時に文字化けする場合の対処方法について解説します。

(Last modified: )

Shift_JISの環境で実行するように指定する

Windows のコマンドプロンプトはデフォルトでは文字コードとして Shift_JIS を使用します。それに対して GCC ではデフォルトで UTF-8 の環境で実行されることを想定しているので、単にコンパイルして実行すると文字化けが発生する場合があります。

次の簡単なサンプルを見て下さい。

#include <stdio.h>

int main(void)
{
  printf("こんにちは。\n");
  return 0;
}

このプログラムを文字コードとして UTF-8 を使って保存します。ファイル名は sample.c としました。そのあとで GCC を使って次のようにコンパイルを行います。

gcc sample.c -o sample

Shift_JISの環境で実行するように指定する(1)

コンパイルが終わりましたら、次のように実行してください。

sample

Shift_JISの環境で実行するように指定する(2)

画面に出力された文字列は文字化けしてしまいました。

このように Windows のコマンドプロンプトのように Shift_JIS が使用されている環境でプログラムの実行を行う場合は、プログラムのコンパイル時に -fexec-charset=CP932 を指定してください。

それでは先ほどと同じプログラムを GCC を使って次のようにコンパイルを行います。

gcc sample.c -o sample -fexec-charset=CP932

Shift_JISの環境で実行するように指定する(3)

コンパイルが終わりましたら、次のように実行してください。

sample

Shift_JISの環境で実行するように指定する(4)

今度は文字化けせずに日本語を出力することができました。

コマンドプロンプトで使用する文字コードを変更する

コマンドプロンプトで実行する場合、別の方法としてコマンドプロントで使用する文字コードを UTF-8 に変更することで文字化けを回避することもできます。(コマンドプロンプトで文字コードを変更する詳細については「文字コードの設定(CHCP)」を参照されてください)。

GCC を使って C 言語のプログラムをコンパイルする前に、コマンドプロンプトで次のように実行してください。

chcp 65001

コマンドプロンプトで使用する文字コードを変更する(1)

次のように表示されます。

コマンドプロンプトで使用する文字コードを変更する(2)

先ほど使用したのと同じプログラムを文字コードとして UTF-8 を使って保存します。ファイル名は sample.c としました。そのあとで GCC を使って次のようにコンパイルを行います。

gcc sample.c -o sample

コマンドプロンプトで使用する文字コードを変更する(3)

コンパイルが終わりましたら、次のように実行してください。

sample

コマンドプロンプトで使用する文字コードを変更する(4)

文字化けせずに日本語を出力することができました。

なおコマンドプロンプトの文字コードを Shift_JIS に戻しておくにはコマンドプロンプトで次のように実行してください。

chcp 932

-- --

Windows 環境で GCC を使って作成したプログラムの実行時に文字化けする場合の対処方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。