
C言語のきほん|コマンドプロンプトで日本語を表示する
文字化けで止まらない。C言語の日本語表示を、最初にやさしく整えよう。
C言語の学習を始めると、最初は Hello World のようなシンプルな表示から入ることが多いですよね。
ところが、表示する内容を日本語に変えた瞬間、画面に意味不明な文字が並んでしまうことがあります。
これはプログラムのミスではなく、文字コードの違いが原因になっていることがよくあります。
特に Windows のコマンドプロンプトでは、VS Code の保存形式(UTF-8)と表示側の文字コード設定が合っていないと、文字化けが起きやすいです。
このテーマは、最初に一度しっかり理解しておくと、その後の学習がかなりラクになります。
この記事では、文字コードの基本から、なぜ文字化けが起きるのか、そして C 言語の日本語表示を安定させるための設定まで、表を使いながら丁寧に整理していきます。

文字コードとは?
コンピュータは、文字をそのまま「文字」として理解しているわけではありません。
内部では、文字を数値に変換して扱っています。このときの「文字に対応する数値のルール」が文字コードです。
たとえば、英字だけなら比較的単純ですが、日本語はひらがな・カタカナ・漢字があるため、扱う文字の種類が多く、環境ごとの差が出やすくなります。
そのため、C言語で日本語を表示するときは、ソースコードを保存した文字コードとコマンドプロンプトの表示用文字コードをそろえることがとても大切です。
文字コードの基本をつかむ表
| 項目 | 内容 | C言語学習でのポイント |
|---|---|---|
| 文字コード | 文字を数値として表すためのルール | 文字列を正しく表示するための土台 |
| 文字化け | 文字コードの解釈が一致しないために、別の文字として表示される現象 | プログラムが正しくても発生する |
| 保存側の文字コード | エディタ(例: VS Code)がソースファイルを保存するときの形式 | 多くの環境で UTF-8 が標準 |
| 表示側の文字コード | ターミナルやコマンドプロンプトが表示に使う形式 | Windows の cmd は設定確認が必要 |
| 一致の重要性 | 保存側と表示側が同じだと正しく表示されやすい | 日本語表示トラブル回避の基本 |
特に大事なのは、保存側(VS Code)と表示側(コマンドプロンプト)を分けて考えることです。ここを分けて理解できると、文字化けの原因を切り分けしやすくなります。
この記事で出てくる重要な項目を整理する
先に全体像を表で見ておくと、読み進めやすくなります。
主要項目の一覧
| 項目 | 役割 | この記事での位置づけ |
|---|---|---|
| 文字コード | 文字を数値に変換するルール | 日本語表示の前提知識 |
| Shift-JIS | Windowsで長く使われてきた日本語向け文字コード | 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-JIS | UTF-8 |
|---|---|---|
| 主な用途 | 旧来の Windows 日本語環境でよく使われた | 現在の標準的な文字コード |
| 互換性 | 日本語環境では扱いやすい場面もあるが、他環境とのズレが出やすい | 多言語・他OSとの互換性が高い |
| VS Code との相性 | 初期設定では保存形式が異なることがある | 初期設定で UTF-8 のことが多く相性が良い |
| cmd での初期状態 | UTF-8 ではないことがある | chcp 65001 で合わせると表示しやすい |
| 学習上の扱いやすさ | 環境依存の知識が必要 | 今後の学習・開発でも使う場面が多い |
UTF-8 が現代の主流である一方、Windows のコマンドプロンプト側が最初から UTF-8 とは限らない、という点です。
つまり、C言語の学習では「ソースコードの内容」だけでなく、「実行する画面の設定」もセットで見ていく必要があります。
文字化けはなぜ起こるの?
文字化けは、よく「日本語を入れたら壊れた」と感じやすいのですが、実際には壊れているわけではありません。
同じデータを、別のルールで読み取ってしまっているだけです。
文字化けの発生条件
| 状況 | 保存形式 | 表示側設定 | 結果 |
|---|---|---|---|
| 英数字のみ | UTF-8 | Shift-JIS系 | 目立った問題が出にくいことがある |
| 日本語あり | UTF-8 | Shift-JIS系 | 文字化けが起きやすい |
| 日本語あり | UTF-8 | UTF-8 | 正しく表示されやすい |
| 日本語あり | Shift-JIS | Shift-JIS | 正しく表示されやすい |
| 日本語あり | Shift-JIS | UTF-8 | 文字化けすることがある |
英数字だけだと気づきにくいのですが、日本語を表示した瞬間に問題が表面化する、という流れが学習初期によく起きます。
コマンドプロンプトで日本語を表示するための設定
Windows のコマンドプロンプトで日本語を正しく表示したいときは、まずコードページを UTF-8 に変更します。
そのために使う命令が chcp 65001 です。
設定手順
| 手順 | 入力内容・操作 | 目的 | 補足 |
|---|---|---|---|
| 1 | cmd を起動する | コマンドプロンプトを開く | Windows の実行環境を準備 |
| 2 | chcp 65001 を入力する | コードページを UTF-8 に変更 | 日本語表示のズレを減らす |
| 3 | gcc でコンパイルする | 実行ファイルを作る | 通常の手順でOK |
| 4 | プログラムを実行する | 日本語表示を確認する | 文字化けしないか確認 |
| 5 | cmd を再起動した後 | 再度 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)
| 手順 | コマンド | 何をしているか |
|---|---|---|
| 1 | chcp 65001 | コマンドプロンプトを UTF-8 表示に切り替える |
| 2 | gcc sample_jp.c -o sample_jp | Cソースをコンパイルして実行ファイルを作る |
| 3 | sample_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)はまさにそのインターフェースの一つです。
