Visual Studioで「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」と表示される場合

Visual Studio を使って C 言語のプログラムをコンパイルしたときに「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」という警告が表示されることがあります。この場合、文字コードとして UTF-8(BOM無し)ではなく UTF-8(BOM付き)を使ってプログラムを保存することで解決します。ここでは Visual Studio で C 言語のプログラムをコンパイルしたとき「warning C4819」が表示された場合の対処方法について解説します。

(Last modified: )

warning C4819が出た場合の対処方法

Visual Studio を使って日本語が含まれるプログラムをコンパイルしたときに警告が表示される場合があります。次の簡単なサンプルを見て下さい。

#include <stdio.h>

int main(void)
{
  printf("こんにちは。\n");
  return 0;
}

このプログラムを文字コードとして UTF-8(BOM無し) を使って保存します。ファイル名は sample.c としました。そのあとで Visual Stuido を使って次のようにコンパイルを行います。

cl sample.c

すると次のように「warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」という警告が表示されます。

warning C4819が出た場合の対処方法(1)

プログラムは UTF-8(BOM無し) を使って保存しているにも関わらず「Unicode 形式で保存してください」という警告が表示されました。この警告を表示されないようにするには UTF-8(BOM無し) ではなく UTF-8(BOM付き) でプログラムを保存することで解決します。

実際に先ほどのプログラムを文字コードとして UTF-8(BOM付き) で保存したあと、先ほど同じようにコンパイルを行いました。

cl sample.c

今度は警告が表示されずにコンパイルが成功します。

warning C4819が出た場合の対処方法(2)

このように Visual Studio では BOM 付きでないと使用されている文字コードを正しく判別できません。日本語が含まれるプログラムを UTF-8 で保存しコンパイルする場合には UTF-8(BOM付き) で保存されるようにしてください。

-- --

Visual Studio で C 言語のプログラムをコンパイルしたとき「warning C4819」が表示された場合の対処方法について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。