【Visual Studio 2026|C言語】デバッグコンソールで日本語が文字化けする原因と直し方

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だ」と自動的に判断してくれるため、余計な設定変更なしに正しく変換されます。

手順は以下の通りです。

  1. Visual Studioで対象の .c ファイルを開く
  2. メニューの「ファイル」→「名前を付けて ○○.c を保存」を選択
  3. 保存ダイアログの「保存」ボタン右にある**▼(小さい矢印)**をクリックし、「エンコード付きで保存」を選択
  4. 上書き確認が表示されたら「はい」
  5. エンコード一覧から「Unicode (UTF-8 書名付き) – コードページ 65001」を選択して「OK」
  6. 再度ビルド・実行(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

VS2026 editor removes UTF-8 BOM from .cpp file(Developer Community)

「BOM付きUTF-8で保存したはずの .cpp ファイルを編集・保存すると、BOMが外れてしまう」という報告です。

ただし調査の結果、原因はプロジェクト内の .editorconfigcharset = 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言語プロジェクトの作成方法は以下の記事でまとめています。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次