Visual StudioでC言語のプログラムを書いてたら、日本語がデバッグコンソールで文字化けした…。どうやって直すんだろう。
Visual StudioでC言語のプログラムを書いていて、printf で出力した日本語がデバッグコンソールで文字化けした経験はありませんか?
私もVisual Studio 2026でプログラムを作っていたときに、この現象にぶつかりました。本記事では、実際に発生した文字化けの様子と、その原因・対処法を初心者向けに整理します。
発生した症状
C言語で学生の成績を一覧表示するプログラムを作成し、Visual Studio 2026でデバッグ実行(Ctrl+F5)したところ、以下のように日本語部分だけが文字化けしました。

英数字(Sato 85 など)は正常に表示されているのに、日本語部分だけが崩れているのがポイントです。
原因
原因:ソースファイルとコンソールの文字コード不一致
原因は、ソースコードの保存形式とコンソールが解釈する文字コードが食い違っていたことです。
Windows環境のVisual Studioでは、.c ファイルにバイト順マーク(BOM:Byte Order Mark)が付いていない場合、コンパイラーはそのファイルを従来の日本語Windows標準である Shift-JIS として解釈します。
ところが、テキストエディタなどで保存したソースファイルが実際には UTF-8(BOMなし) だった場合、この解釈がずれてしまいます。
その結果、UTF-8のバイト列がShift-JISとして誤って読み込まれ、実行ファイルの中に化けた文字列が埋め込まれてしまうのです。英数字は両方の文字コードで同じバイト表現になるため影響を受けず、日本語だけが化けて見えます。

なお、この問題は文字コードの一致・不一致に起因するもので、Visual Studioのバージョンを問わず起こりうる現象です。
対処法: ソースファイルを「UTF-8(BOM付き)」で保存し直す
最も簡単で確実な対処法は、ソースファイルにBOMを付けて保存し直すことです。
BOMが付いていれば、コンパイラーが「このファイルはUTF-8だ」と自動的に判断してくれるため、余計な設定変更なしに正しく変換されます。
手順は以下の通りです。
- Visual Studioで対象の
.cファイルを開く - メニューの「ファイル」→「名前を付けて ○○.c を保存」を選択
- 保存ダイアログの「保存」ボタン右にある**▼(小さい矢印)**をクリックし、「エンコード付きで保存」を選択
- 上書き確認が表示されたら「はい」
- エンコード一覧から「Unicode (UTF-8 書名付き) – コードページ 65001」を選択して「OK」
- 再度ビルド・実行(Ctrl+F5)



環境によっては「シグネチャ付き」「with signature」といった表記になっている場合もありますが、これは「BOM」の言い換えで指しているものは同じです。
表記が見当たらないときは、「シグネチャ」または「署名」という文言が付いた項目を探してみてください。
これで日本語が正しく表示されるようになります!

補足: Visual Studio 2026自体のエンコーディング・BOM関連の不具合報告について
今回の私のケースは「ファイルをBOMなしUTF-8で保存していた」という自分の作業に起因するものでした。
ただ、調べている過程で、Visual Studio 2026本体側のファイルエンコーディングやBOMの扱いに関する不具合報告が、Microsoft公式のDeveloper Communityに複数投稿されていることに気づきました。
- 補足①VS2026 editor removes UTF-8 BOM from .cpp file(Developer Community)
- 補足②Visual Studio 2026 randomly changes encoding(Developer Community)
中身を確認したところ、内容は次のようなものでした。
補足①VS2026 editor removes UTF-8 BOM from .cpp file
VS2026 editor removes UTF-8 BOM from .cpp file(Developer Community)
「BOM付きUTF-8で保存したはずの .cpp ファイルを編集・保存すると、BOMが外れてしまう」という報告です。
ただし調査の結果、原因はプロジェクト内の .editorconfig に charset = utf-8(BOMなし)という設定が入っていたことで、VS本体の不具合ではありませんでした。
この設定はユーザーが手動で選んだ保存時のエンコーディングよりも優先されるため、意図せずBOMが外れる、という「仕様通りの挙動」だったと説明されています。
現在このスレッドは「情報不足のためクローズ」となっています。
補足②Visual Studio 2026 randomly changes encoding
Visual Studio 2026 randomly changes encoding(Developer Community)
「保存のたびにファイルのエンコーディングがUTF-8とWindows-1252の間で意図せず切り替わってしまう」という报告で、2026年4月時点でも「調査中」のまま解決していません。
なお同じスレッドには、今回の記事とまさに同じ現象(BOMなしUTF-8のC++ファイルでUnicode文字列が化ける)を報告したコメントもあります。
Microsoft側は「BOMなしでコンパイルすると文字コードの判定に失敗することがあるので、/utf-8 コンパイラオプションを使うか、BOM付きで保存してほしい」と回答しています。これは本記事の対処法と同じ内容です。
補足まとめ
まとめると、
- 補足①:
.editorconfigの設定次第でBOMが意図せず外れることがある - 補足②:BOMなしでコンパイルすると文字コードの判定に失敗することがある
といった情報になります。
もし「BOM付きで保存したはずなのに、ファイルを開き直すとBOMが外れている」という症状に心当たりがある場合は、補足①を参考にしていただき、プロジェクトに .editorconfig が無いか確認してみることをおすすめします。
他にもある対処法(参考)
環境によっては、以下のような方法でも対応できるようです。
ただし、これらはコンソール側の設定やコード追加が絡み手順がやや複雑になるため、初心者の方はまず「BOM付き保存」から試すのがおすすめです。
- プロジェクトのプロパティでコンパイラーオプション
/utf-8を指定する(ソース・実行文字セットの両方をUTF-8にする方法) - Windowsのシステムロケール設定で「ベータ: ワールドワイド言語サポートでUnicode UTF-8を使用」を有効にする
- プログラム内で
SetConsoleOutputCP(CP_UTF8)を呼び出し、コンソールの出力コードページを実行時に切り替える
まとめ
- 文字化けの原因は「ソースファイルの文字コード(UTF-8)とコンパイラーが想定する文字コード(Shift-JIS)」の不一致
- 対処法は「エンコード付きで保存」から「Unicode (UTF-8 シグネチャ付き) – コードページ 65001」を選んで保存し直すだけ
- 英数字は化けず日本語だけ化ける場合、まずこの文字コードのずれを疑うとよい
- Visual Studio 2026では
.editorconfigの設定次第でBOMが意図せず外れることがあるほか、Microsoft公式のDeveloper Communityでも同種の文字化け事例と対処法(BOM付き保存 //utf-8オプション)が報告されている
Windowsで日本語を扱うC/C++プログラミングでは、多くの人が一度は通る道だと思います。
同じ症状で困っている方の参考になれば幸いです。
最後まで読んでいただき、ありがとうございました!
VisualStudio2026のインストールや、C言語プロジェクトの作成方法は以下の記事でまとめています。




コメント