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

問題

このエントリのタイトル長すぎる…。

のは置いといて、タイトル通りの問題についてです。

Qt Creator でソースを編集し、コンパイラとしてVisualStudio を使用している環境でビルド時に「警告: C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。」というエラーが出る。

しかし問題のソースコードはUTF-8 で保存されていて、既にUnicode 形式ですけど? というケース。

原因

結論から言ってしまうと、BOM(バイトオーダーマーク) なしのUTF-8 だとこの警告が出るようです。

対策

というわけでBOM を追加します。

Qt Creator でツール→オプションを開き、テキストエディタのBehavior タブの「ファイルの文字コード」で「UTF-8 BOM」を「文字コードがUTF-8 の時に追加」にします。

UTF-8 BOM の設定

設定を適用しても既に保存されているファイルは更新されないので、問題の起きたファイルを保存し直しましょう。

まとめ

Qt Creator のデフォルト設定ではUTF-8 のBOM は「読み込み時の状態を保存」になっており、Qt Creator で新規に作成したソースファイルはBOM なしになっている、という仕様のために発生していました。VisualStudio コンパイラを使用する場合は、Qt Creator をインストールしたらまずここの設定を確認したほうが良いかもしれません。