VS2017でVC++新規プロジェクト作成すると発生する文字コード関連のエラー
文字コード関連のエラー
自宅でC++を触ってみたときのこと。 Visual Studio2017を起動し、Visual C++Windowsコンソールアプリケーションの新規プロジェクトを作成。 ひとまず、coutでコンソールに文字列を出力してみるかと、ざざっとコードを記述。
#include "stdafx.h" #include <string> #include <iostream> using namespace std; int main(){ string name = "枝豆太郎"; cout << "名前は " << name << "です。" << endl; return 0; }
ビルドすると……何かエラーが発生している。
「定数が2行目に続いています。」 「構文エラー:';'が○○の前に必要です。」
これだけシンプルなソースコードに、コーディングミスがあるわけもない。
「ファイルをUnicode形式で保存してください。」と警告が出ているので、文字コードあたりが悪いのだとはわかる。 Visual Studio2017でファイルの文字コードを変更する方法を調べたところ、2015等は勝手が変わっていたようだった。
エンコードして保存
ファイル > 名前をつけて○○を保存 を選択。 ファイル保存ダイアログの右下に、ファイルの保存方法に関するプルダウンが存在している。 「エンコード付きで保存」を選択すると、エンコードの種類の一覧が表示される。 デフォルトだと「Unicode(UTF-8 シグネチャなし)」が選択されているので、一覧の上の方へ遡り、「Unicode(UTF-8 シグネチャ付き)」を選択して上書き保存。
再度ビルドするとエラーはなく、無事デバッグ実行ができた。
シグネチャはBOMのことで、BOM付きUTF-8で保存すれば動くとわかった。 今回はC++単独でしかも個人開発なのでいいのだが、やぱりUTF-8で統一したいところだ。
おまけ
ちなみに、上記のソースコードだと文字列表示後にコンソールがすぐ閉じてしまうので、returnの前にgetchar();を追加すると、キー入力があるまでコンソールを開いたままにしてくれる。
以上。