Windows10のgccでUTF8で作ったコードが文字化けする場合の対処

Windows10のgccでUTF8で作ったコードが文字化けする場合の対処 C言語初級
結論
コマンドプロンプト上

 

chcp 65001

と打ち込んでエンターキーを押す。

管理人より 2020.11.27追記
本記事内容は、マルチバイト文字を出力するのみであれば問題ありませんが、scanf関数などで入力を伴う処理をした際は別の対処が必要です
以下の記事に詳しく書いてありますので、参考になさってください。

scanf関数でうまく入力できない場合は以下リンクを参考

先日MinGWというgccコンパイラをインストールしたのですが、UTF-8で保存したC言語ソースコードをWindowsのコマンドプロンプトでコンパイルし実行したら見事文字化けしました。

gccのコンパイラ側のスイッチで

gcc test.c -finput-charset=UTF-8 -fexec-charset=CP932

などではうまくいかなかったため、上記方法にたどりつきました。

再現イメージ
普通にgcc ***.cとしてコンパイルして作成された実行ファイルa.exeをそのまま実行してみる。
Windows10のgccでUTF8で作ったコードが文字化けする場合の対処

見事に文字化け!

次にコマンドプロンプトをUTF-8の文字コード出力に対応させるコマンド

chcp 65001

を実行。(実行後は、コマンドプロンプト画面の情報がクリアされ、先頭行に「Active code page: 65001」と表示されます)

Windows10のgccでUTF8で作ったコードが文字化けする場合の対処

再度a.exeを実行してみると…
Windows10のgccでUTF8で作ったコードが文字化けする場合の対処

文字化けが解消した!

よく利用するのであれば、バッチファイルを作っておくといいと思います。(このバッチファイルをダブルクリックすると最初からUTF-8モードでコマンドプロンプトが起動します)

例)bakenai.bat

@echo off
chcp 65001
cmd

しかし、文字化けって自分が悪いことした訳でもないのに、いやな気分になりますよね。

あっ、あとちなみにコマンドプロンプトの元の文字コードであるSHIFT-JISに戻す場合は、

chcp 932

と打ち込んでEnterキーを押して下さい。

コメント

  1. taken より:

    とても参考になりました。
    丁度どうやって直すか手をこまねいていたので助かりました。

  2. umeboshi より:

    バッチファイルを作ってみたのですが、このサイトに載っている通りに入力したのにコマンドプロンプトが一瞬だけ表示されて消えてしまいます。原因は何でしょうか。もしご存じでしたらご享受していただけると幸いです。

    • dennou より:

      管理人です。
      以下のようなバッチファイルで試してみてください。
      例)bakenai.bat

      @echo off
      chcp 65001
      cmd
      

      ご指摘ありがとうございます。
      わたしが最初に記述した

      bakenai.bat

      @echo off
      chcp 65001
      echo UTF-8モードだよ!
      

      の例ですが、コマンドプロンプトを起動した後に

      bakenai [Enter]

      などとUTF-8モードにするバッチファイルを起動することをイメージしていたため、単独でbakenai.batをダブルクリックするとすぐに消えてしまいます。
      以前の記事が紛らわしい表現だっと思うので、ブログ内のバッチファイル例も併せて修正させていただきました。
      ありがとうございました。

  3. Yoshi より:

    質問させてください。私もGCCでコンパイルしています。

    私のPCではコマンドプロンプトでCHCP 65001とすると

    ‘chcp’ は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。

    とコマンド設定ができないのですが、どうしたらよいのかご存じでしょうか?

    私はC言語を始めたての初心者なので易しく設定できる方法があれば
    ご教授いただけると幸いです。

    • dennou より:

      考えられる原因ですが、WindowsのPath設定を疑ってみてください。Path設定の確認方法に関しましては以下の記事にまとめましたので確認してみてください。

      https://dianxnao.com/windows10%ef%bc%9apath%e8%a8%ad%e5%ae%9a%e3%82%92%e7%a2%ba%e8%aa%8d%e3%81%99%e3%82%8b/

      質問にあるchcpコマンドですが、chcpの実行形式ファイルは、上記記事でも説明しているC:\Windows\system32にある「chcp.com」というファイルです。たぶん存在していると思いますが、一応確認してください。
      このC:\Windows\system32(または%SystemRoot%\system32)の設定がPath設定にないと「cd」「dir」などのコマンドは実行できても「chcp」は実行できません。

  4. Yoshi より:

    ありがとうございました。

    おかげさまで、パスの設定をしましたらCHCPの実行結果も得られました。

    お礼申し上げます。

タイトルとURLをコピーしました