C言語のきほん|コマンドプロンプトで日本語を表示する

文字化けで止まらない。C言語の日本語表示を、最初にやさしく整えよう。

C言語の学習を始めると、最初は Hello World のようなシンプルな表示から入ることが多いですよね。
ところが、表示する内容を日本語に変えた瞬間、画面に意味不明な文字が並んでしまうことがあります。

これはプログラムのミスではなく、文字コードの違いが原因になっていることがよくあります。
特に Windows のコマンドプロンプトでは、VS Code の保存形式(UTF-8)と表示側の文字コード設定が合っていないと、文字化けが起きやすいです。

このテーマは、最初に一度しっかり理解しておくと、その後の学習がかなりラクになります。
この記事では、文字コードの基本から、なぜ文字化けが起きるのか、そして C 言語の日本語表示を安定させるための設定まで、表を使いながら丁寧に整理していきます。

文字コードとは?

コンピュータは、文字をそのまま「文字」として理解しているわけではありません。
内部では、文字を数値に変換して扱っています。このときの「文字に対応する数値のルール」が文字コードです。

たとえば、英字だけなら比較的単純ですが、日本語はひらがな・カタカナ・漢字があるため、扱う文字の種類が多く、環境ごとの差が出やすくなります。
そのため、C言語で日本語を表示するときは、ソースコードを保存した文字コードコマンドプロンプトの表示用文字コードをそろえることがとても大切です。

文字コードの基本をつかむ表

項目内容C言語学習でのポイント
文字コード文字を数値として表すためのルール文字列を正しく表示するための土台
文字化け文字コードの解釈が一致しないために、別の文字として表示される現象プログラムが正しくても発生する
保存側の文字コードエディタ(例: VS Code)がソースファイルを保存するときの形式多くの環境で UTF-8 が標準
表示側の文字コードターミナルやコマンドプロンプトが表示に使う形式Windows の cmd は設定確認が必要
一致の重要性保存側と表示側が同じだと正しく表示されやすい日本語表示トラブル回避の基本

特に大事なのは、保存側(VS Code)と表示側(コマンドプロンプト)を分けて考えることです。ここを分けて理解できると、文字化けの原因を切り分けしやすくなります。

この記事で出てくる重要な項目を整理する

先に全体像を表で見ておくと、読み進めやすくなります。

主要項目の一覧

項目役割この記事での位置づけ
文字コード文字を数値に変換するルール日本語表示の前提知識
Shift-JISWindowsで長く使われてきた日本語向け文字コードcmd の標準設定として登場
UTF-8現在主流の文字コードVS Code や多くの環境の標準
文字化け文字コードの不一致で起きる表示崩れ本記事のトラブル例
コマンドプロンプトWindows のCLI(コマンド入力画面)日本語表示の実行環境
chcp 65001コードページを UTF-8 に変更するコマンド文字化け対策の中心
VS Codeソースコード作成・保存に使うエディタUTF-8 保存の前提環境
Mac/Linux のCLI多くの場合 UTF-8 が標準Windowsとの違いの比較対象

何が原因で、どこで設定し、どう直すのかが見えやすくなるので、読みながら迷いにくくなります。

Shift-JIS と UTF-8 の違いをやさしく比較する

日本語を扱うときに特に大切なのが、Shift-JIS と UTF-8 の違いです。
どちらが良い・悪いというより、今の環境でどちらが使われているかを把握することがポイントです。

Shift-JIS と UTF-8 の比較

比較項目Shift-JISUTF-8
主な用途旧来の Windows 日本語環境でよく使われた現在の標準的な文字コード
互換性日本語環境では扱いやすい場面もあるが、他環境とのズレが出やすい多言語・他OSとの互換性が高い
VS Code との相性初期設定では保存形式が異なることがある初期設定で UTF-8 のことが多く相性が良い
cmd での初期状態UTF-8 ではないことがあるchcp 65001 で合わせると表示しやすい
学習上の扱いやすさ環境依存の知識が必要今後の学習・開発でも使う場面が多い

UTF-8 が現代の主流である一方、Windows のコマンドプロンプト側が最初から UTF-8 とは限らない、という点です。
つまり、C言語の学習では「ソースコードの内容」だけでなく、「実行する画面の設定」もセットで見ていく必要があります。

文字化けはなぜ起こるの?

文字化けは、よく「日本語を入れたら壊れた」と感じやすいのですが、実際には壊れているわけではありません。
同じデータを、別のルールで読み取ってしまっているだけです。

文字化けの発生条件

状況保存形式表示側設定結果
英数字のみUTF-8Shift-JIS系目立った問題が出にくいことがある
日本語ありUTF-8Shift-JIS系文字化けが起きやすい
日本語ありUTF-8UTF-8正しく表示されやすい
日本語ありShift-JISShift-JIS正しく表示されやすい
日本語ありShift-JISUTF-8文字化けすることがある

英数字だけだと気づきにくいのですが、日本語を表示した瞬間に問題が表面化する、という流れが学習初期によく起きます。

コマンドプロンプトで日本語を表示するための設定

Windows のコマンドプロンプトで日本語を正しく表示したいときは、まずコードページを UTF-8 に変更します。
そのために使う命令が chcp 65001 です。

設定手順

手順入力内容・操作目的補足
1cmd を起動するコマンドプロンプトを開くWindows の実行環境を準備
2chcp 65001 を入力するコードページを UTF-8 に変更日本語表示のズレを減らす
3gcc でコンパイルする実行ファイルを作る通常の手順でOK
4プログラムを実行する日本語表示を確認する文字化けしないか確認
5cmd を再起動した後再度 chcp 65001 を入力設定はリセットされるため

特に見落としやすいのが 5番目 で、コマンドプロンプトを閉じると設定が戻ることがあるため、毎回入力が必要になる点です。

サンプルプログラム

ファイル名:sample_jp.c

#include <stdio.h>

int main(void)
{
    /* 日本語のメッセージを表示する */
    printf("今日もC言語を学ぼう\n");

    /* 正常終了 */
    return 0;
}

このプログラムはとてもシンプルですが、学習用としてちょうどいいです。
ポイントは、日本語の文字列を printf で表示しているところです。
この1行だけでも、文字コード設定が合っていないと文字化けの確認ができるので、動作確認用のサンプルとして使いやすいです。

サンプルプログラムの各項目

ここからは、上のプログラムに出てくる要素を一つずつ表で確認していきます。
「なんとなく書く」ではなく、「何をしているか」を理解しておくと、応用が効くようになります。

プログラム構成

記述役割くわしい説明
#include <stdio.h>標準入出力の機能を使う準備printf を使うために必要なヘッダファイル
int main(void)プログラムの開始地点C言語では main 関数から実行が始まる
printf("今日もC言語を学ぼう\n");画面に文字を表示\n は改行を表す
return 0;正常終了を返す問題なく終了したことをOSに伝える

特に初学者の方は、printf だけに目が行きがちですが、実は #include や main の形も大切です。
「表示の仕組み」だけでなく、「C言語の基本構造」もいっしょに復習できる形になっています。

実行コマンドの流れを確認する

実際に Windows のコマンドプロンプトで試すときの流れも、表にしておくとわかりやすいです。
ここではファイル名を sample_jp.c にして説明します。

実行コマンドの手順(Windows cmd)

手順コマンド何をしているか
1chcp 65001コマンドプロンプトを UTF-8 表示に切り替える
2gcc sample_jp.c -o sample_jpCソースをコンパイルして実行ファイルを作る
3sample_jp実行ファイルを起動して結果を表示する

日本語表示のための準備 → コンパイル → 実行の流れをまとめたものです。
C言語学習では gcc に意識が向きやすいですが、日本語表示ではその前に chcp 65001 が必要になることがある、という順番が大切です。

文字化けした場合の確認ポイント

もし chcp 65001 を入力しても文字化けする場合は、別の要因もチェックしてみましょう。
ここも表で整理しておくと、トラブル対応がしやすくなります。

文字化け時のチェック

確認ポイントチェック内容対応の例
VS Code の保存形式ファイルが UTF-8 で保存されているか右下の文字コード表示を確認して UTF-8 で保存
cmd のコードページchcp 65001 を実行したか再度入力して状態を確認
フォント日本語表示に適したフォントかcmd のフォント設定を見直す
実行タイミングchcp 実行前に起動していないかchcp 65001 の後に実行する
別ターミナルの利用PowerShell や Windows Terminal を使っているか環境によって挙動が異なるため確認する

学習中は「コードが間違っているのかな?」と不安になりやすいですが、実際には表示環境の設定が原因なことも多いです。
この順で確認すると、落ち着いて対処しやすくなります。

Mac や Linux ではどうなる?

Mac や Linux のCLIは、最初から UTF-8 が前提になっていることが多いです。
そのため、Windows の cmd のように chcp 65001 を毎回入力する必要がないケースが一般的です。

Windows と Mac/Linux の違いを比較する

項目Windows コマンドプロンプトMac / Linux のCLI
初期の文字コード設定UTF-8 でない場合があるUTF-8 のことが多い
日本語表示の準備chcp 65001 が必要になることがある追加設定なしで表示できることが多い
学習時の注意点文字化け対策を最初に覚える文字コードより実行権限やパスの理解が中心
C言語のコード自体基本的に同じ基本的に同じ

C言語の書き方は同じでも、実行環境の初期設定が違うということです。
つまり、Windows でつまずいたとしても、C言語の文法の理解不足とは限りません。環境差として自然なことなので、安心して大丈夫です。

この記事のポイントまとめ

ここまでの内容を、学習の要点として短く整理しておきます。

学習ポイントまとめ

ポイント内容
文字コードの理解文字は数値で管理され、ルールが文字コード
文字化けの原因保存側と表示側の文字コード不一致
Windowsでの対策chcp 65001 で UTF-8 に切り替える
再起動後の注意cmd を開くたびに再設定が必要なことがある
学習のコツコードだけでなく実行環境もセットで確認する

特に C言語の学習初期は、文法・コンパイル・実行・表示環境が一度に出てくるので、頭の中が混ざりやすいです。
こうして最後に整理しておくと、次回からスムーズに日本語表示を試せるようになります。

脚注の補足

文中にある インターフェース は、ここではコンピュータとユーザーがやり取りする接点という意味で使われています。
今回のテーマでいうと、コマンドプロンプト(CLI)はまさにそのインターフェースの一つです。