
C言語の基本|コマンドプロンプトで日本語を表示する
文字化けで止まらないために、C言語の日本語表示をコマンドプロンプトからやさしく整えよう。
C言語の学習を始めると、最初は Hello World のような短い文字表示から練習することが多いです。
英語だけを表示している間は問題なく動いていたのに、表示する文章を日本語に変えた途端、コマンドプロンプトに読めない文字が並んでしまうことがあります。
このような現象は、C言語の文法ミスではなく、文字コードの違いが原因になっていることがよくあります。
特にWindowsのコマンドプロンプトでは、VS Codeで保存したソースファイルの文字コードと、コマンドプロンプトが表示に使う文字コードが合っていないと、日本語が正しく表示されない場合があります。
この記事では、文字コードとは何か、なぜ文字化けが起こるのか、Windowsのコマンドプロンプトで日本語を表示するには何をすればよいのかを、C言語の学習者向けにやわらかく整理していきます。最後には、日本語表示を確認するための短いCプログラムも使って、実際の流れを確認します。
文字コードとは何か
コンピュータは、文字をそのまま文字として理解しているわけではありません。
内部では、文字を数値に置き換えて扱っています。このとき、「どの文字をどの数値として扱うか」を決めるルールが文字コードです。
たとえば、英数字だけなら比較的シンプルに扱える場面が多いですが、日本語にはひらがな、カタカナ、漢字、記号など多くの文字があります。そのため、日本語を扱うときは、保存する側と表示する側で同じ文字コードの考え方を使うことが大切です。
| 項目 | 内容 | C言語学習でのポイント |
|---|---|---|
| 文字コード | 文字を数値として表すためのルール | 文字列を正しく表示するための土台 |
| 文字化け | 文字コードの解釈が合わず、別の文字のように表示される現象 | プログラムが正しくても発生することがある |
| 保存側の文字コード | VS Codeなどのエディタがファイルを保存するときの形式 | UTF-8で保存されることが多い |
| 表示側の文字コード | コマンドプロンプトなどが文字を表示するときの形式 | Windowsでは設定確認が必要 |
| 一致の重要性 | 保存側と表示側のルールを合わせること | 日本語表示トラブルを減らせる |
ここで大切なのは、保存側と表示側を分けて考えることです。
VS Codeで書いたソースコードがUTF-8で保存されていても、コマンドプロンプト側が別の文字コードとして表示しようとすると、日本語が崩れて見えることがあります。
図1:保存側と表示側の文字コードの関係

この図から分かること
日本語表示では、Cプログラムの内容だけでなく、ソースファイルを保存した文字コードと、コマンドプロンプトが表示に使う文字コードの両方が関係します。VS Code側がUTF-8でも、表示側の設定が合っていないと文字化けすることがあります。つまり、プログラムと実行環境をセットで確認することが大切です。
この記事で出てくる重要な項目
コマンドプロンプトで日本語を表示するために、いくつかの用語を先に整理しておきましょう。
用語を知っておくと、あとでトラブルが起きたときに原因を切り分けしやすくなります。
| 項目 | 役割 | この記事での位置づけ |
|---|---|---|
| 文字コード | 文字を数値に変換するルール | 日本語表示の前提知識 |
| Shift-JIS | Windowsで長く使われてきた日本語向け文字コード | cmdの初期設定として関係することがある |
| UTF-8 | 現在広く使われている文字コード | VS Codeや多くの開発環境で使われる |
| 文字化け | 文字コードの不一致で起きる表示崩れ | 今回扱う主なトラブル |
| コマンドプロンプト | WindowsのCLI | Cプログラムの実行結果を表示する場所 |
| chcp 65001 | コードページをUTF-8に変更するコマンド | 文字化け対策の中心 |
| VS Code | ソースコードを作成・保存するエディタ | UTF-8保存の前提になりやすい |
| Mac/LinuxのCLI | macOSやLinuxのターミナル | Windowsとの違いを考える比較対象 |
C言語の学習では、コードの文法だけを見ていると、文字化けの原因に気づきにくいことがあります。
文字化けは、ソースコード、保存形式、表示環境が関係するため、どこでズレているのかを順番に確認することが大切です。
Shift-JISとUTF-8の違い
日本語を扱うときによく出てくる文字コードが、Shift-JISとUTF-8です。
どちらも日本語を扱える文字コードですが、使われてきた場面や他の環境との相性に違いがあります。
| 比較項目 | Shift-JIS | UTF-8 |
|---|---|---|
| 主な用途 | 旧来のWindows日本語環境でよく使われた | 現在の開発環境やWebで広く使われる |
| 互換性 | 日本語Windowsでは扱いやすい場面もある | 多言語や他OSとの互換性が高い |
| VS Codeとの相性 | 設定によっては保存形式が異なる | 初期設定で使われることが多い |
| cmdでの初期状態 | 日本語環境で関係することがある | chcp 65001 で合わせられる |
| 学習上の扱いやすさ | 環境依存の知識が必要 | 今後の学習や開発でも使いやすい |
現在の開発ではUTF-8を使う場面が多く、VS CodeでもUTF-8で保存する流れが一般的です。
一方で、Windowsのコマンドプロンプトは、環境によって最初からUTF-8になっていない場合があります。このズレが、日本語表示の文字化けにつながります。
文字化けはなぜ起こるのか
文字化けは、日本語が壊れたように見える現象です。
ただし、実際にはデータが壊れているというより、文字の読み取りルールが合っていないために、別の文字として表示されていることが多いです。
| 状況 | 保存形式 | 表示側設定 | 結果 |
|---|---|---|---|
| 英数字のみ | UTF-8 | Shift-JIS系 | 問題が目立ちにくいことがある |
| 日本語あり | UTF-8 | Shift-JIS系 | 文字化けが起きやすい |
| 日本語あり | UTF-8 | UTF-8 | 正しく表示されやすい |
| 日本語あり | Shift-JIS | Shift-JIS | 正しく表示されやすい |
| 日本語あり | Shift-JIS | UTF-8 | 文字化けすることがある |
英数字だけを表示しているときは、文字コードの違いに気づきにくいことがあります。
しかし、日本語を表示した瞬間に、保存側と表示側のズレが表面化しやすくなります。
たとえば、C言語で次のような日本語メッセージを表示する場合を考えます。
printf("今日もC言語を学ぼう\n");プログラムの書き方が正しくても、コマンドプロンプト側の文字コード設定が合っていないと、実行結果が文字化けすることがあります。
コマンドプロンプトで日本語を表示するための設定
Windowsのコマンドプロンプトで日本語を表示しやすくするには、コードページをUTF-8に切り替えます。
そのために使うコマンドが chcp 65001 です。
chcp 65001このコマンドは、コマンドプロンプトの表示に使うコードページをUTF-8へ変更するために使います。65001 はUTF-8を表すコードページ番号です。
| 手順 | 入力内容・操作 | 目的 | 補足 |
|---|---|---|---|
| 1 | cmdを起動する | コマンドプロンプトを開く | Windowsの実行環境を準備する |
| 2 | chcp 65001 を入力する | コードページをUTF-8に変更する | 日本語表示のズレを減らす |
| 3 | gccでコンパイルする | 実行ファイルを作る | 通常のコンパイル手順でよい |
| 4 | プログラムを実行する | 日本語表示を確認する | 文字化けしないか見る |
| 5 | cmdを開き直したあと | 必要なら再度 chcp 65001 を入力する | 設定が戻ることがある |
特に見落としやすいのが、cmdを閉じると設定が戻ることがある点です。chcp 65001 は、現在開いているコマンドプロンプトに対して有効になる設定です。新しくcmdを開いたときは、再度入力が必要になる場合があります。
図2:chcp 65001で日本語表示を整える流れ

この図から分かること
chcp 65001 を入力すると、コマンドプロンプトのコードページをUTF-8へ切り替えられます。VS CodeでUTF-8として保存したCプログラムを実行するとき、cmd側もUTF-8に合わせることで、日本語メッセージが正しく表示されやすくなります。コンパイル前または実行前に設定しておくことがポイントです。
コマンドプロンプトで日本語を表示するプログラム
ファイル名:message_jp.c
#include <stdio.h>
int main(void)
{
/* 日本語のメッセージを表示する */
printf("今日もC言語を学びます。\n");
printf("コマンドプロンプトで日本語表示を確認します。\n");
/* 正常終了 */
return 0;
}実行結果の例
今日もC言語を学びます。
コマンドプロンプトで日本語表示を確認します。このプログラムは、日本語の文字列がコマンドプロンプトで正しく表示されるかを確認するための例です。
処理内容はとてもシンプルで、printf を使って2行の日本語メッセージを表示しています。
| 記述 | 役割 | くわしい説明 |
|---|---|---|
| #include <stdio.h> | 標準入出力の機能を使う準備 | printf を使うために必要 |
| int main(void) | プログラムの開始地点 | C言語ではmain関数から実行が始まる |
| printf("今日もC言語を学びます。\n"); | 日本語メッセージを表示 | 文字コード設定の確認に使える |
| printf("コマンドプロンプトで日本語表示を確認します。\n"); | 2行目の日本語を表示 | 複数行の表示確認ができる |
| return 0; | 正常終了を返す | 問題なく終了したことを表す |
このプログラムでは、日本語の文字列を含めているため、文字化け確認に向いています。
英数字だけの表示では問題が見えにくい場合でも、日本語を表示すると、保存形式と表示側設定のズレを確認しやすくなります。
実行コマンドの流れ
ここでは、ファイル名を message_jp.c として保存した場合の流れを確認します。
まず、コマンドプロンプトを開き、必要に応じてファイルを保存したフォルダーへ移動します。
次に、cmd側をUTF-8に切り替えます。
chcp 65001そのあと、GCCでコンパイルします。
gcc message_jp.c -o message_jp最後に、作成された実行ファイルを起動します。
message_jp| 手順 | コマンド | 何をしているか |
|---|---|---|
| 1 | chcp 65001 | コマンドプロンプトをUTF-8表示に切り替える |
| 2 | gcc message_jp.c -o message_jp | Cソースをコンパイルして実行ファイルを作る |
| 3 | message_jp | 実行ファイルを起動して結果を表示する |
この流れでは、日本語表示の準備、コンパイル、実行の順番が大切です。
C言語学習ではgccに注目しがちですが、日本語を表示する場合は、その前にコマンドプロンプトの文字コード設定も確認しておくと安心です。
文字化けした場合の確認ポイント
chcp 65001 を入力しても文字化けする場合は、別の要因が関係していることがあります。
そのときは、次の順番で確認すると落ち着いて対応できます。
| 確認ポイント | チェック内容 | 対応の例 |
|---|---|---|
| VS Codeの保存形式 | ファイルがUTF-8で保存されているか | 右下の文字コード表示を確認する |
| cmdのコードページ | chcp 65001 を実行したか | 再度入力して状態を確認する |
| フォント | 日本語表示に対応したフォントか | cmdのフォント設定を見直す |
| 実行タイミング | chcp 65001 の前に実行していないか | UTF-8へ切り替えたあとに実行する |
| 実行ファイル | 古い実行ファイルを動かしていないか | もう一度コンパイルしてから実行する |
| 別ターミナル | PowerShellやWindows Terminalを使っているか | 環境ごとの文字コード設定を確認する |
学習中は、文字化けを見ると「コードを間違えたのかな」と不安になりやすいです。
しかし、日本語表示の問題は、C言語の文法ではなく、表示環境の設定が原因になっていることも多いです。エラーと文字化けを分けて考えると、トラブル対応がしやすくなります。
図3:文字化けしたときの確認ルート

この図から分かること
文字化けが起きたときは、C言語の文法だけを見るのではなく、保存形式、cmdのコードページ、フォント、再コンパイルの有無を順番に確認することが大切です。特に、VS CodeでUTF-8保存になっているか、cmdで chcp 65001 を実行したかは、最初に見ておきたいポイントです。
MacやLinuxではどうなるか
macOSやLinuxのCLIでは、最近の環境ではUTF-8が標準になっていることが多いです。
そのため、Windowsのコマンドプロンプトのように、毎回 chcp 65001 を入力しなくても日本語が表示できる場合があります。
| 項目 | Windows コマンドプロンプト | Mac / Linux のCLI |
|---|---|---|
| 初期の文字コード設定 | UTF-8ではない場合がある | UTF-8のことが多い |
| 日本語表示の準備 | chcp 65001 が必要になることがある | 追加設定なしで表示できることが多い |
| 学習時の注意点 | 文字化け対策を最初に覚える | 実行権限やパスの理解が中心になりやすい |
| C言語のコード | 基本的に同じ | 基本的に同じ |
C言語の書き方自体は、WindowsでもMacでもLinuxでも大きく変わりません。
ただし、実行環境の初期設定には違いがあります。Windowsで日本語表示につまずいたとしても、それはC言語の理解不足とは限りません。環境差として自然に起こることなので、落ち着いて設定を確認していきましょう。
よく使う確認コマンド
コマンドプロンプトで日本語表示を確認するときは、最低限次のコマンドを覚えておくと便利です。
| コマンド | 用途 |
|---|---|
| chcp | 現在のコードページを確認する |
| chcp 65001 | コードページをUTF-8に変更する |
| gcc message_jp.c -o message_jp | Cソースをコンパイルする |
| message_jp | 実行ファイルを起動する |
chcp だけを入力すると、現在のコードページを確認できます。
chcp 65001 を入力すると、UTF-8へ切り替えられます。日本語を含むCプログラムを実行する前に、この流れを確認しておくと安心です。
補足:インターフェースという言葉
インターフェースは、コンピュータとユーザーがやり取りするための接点という意味で使われます。
今回のテーマでいうと、コマンドプロンプトはCLI、つまり文字で命令を入力して操作するインターフェースです。
C言語の学習では、VS Codeでソースコードを書き、コマンドプロンプトでコンパイルや実行を行います。
このとき、コマンドプロンプトは単なる黒い画面ではなく、C言語のプログラムを動かし、結果を確認するための大切な作業場所になります。
