visual c++ 2010 では BOM 無しの UTF-8 がコンパイルできない

mac とのソースコードの共通化について
http://social.msdn.microsoft.com/Forums/ja/vsgeneralja/thread/62164982-9795-4f5a-bd7c-85ec121f9126

こんなのを見つけて「え?」となったので試してみると…確かにできませんでした。

以下のようなファイルを visual c++ 上で作成

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
	puts("masuda tomoaki");
	puts("増田 智明");

	return 0;
}

エディタで開いて「BOM 無し」で保存する。

先のファイルをコンパイルすると、

D:\work\blog\src\SampleUTFCode\SampleUTFCode>cl /c SampleUTFCode.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

SampleUTFCode.cpp

D:\work\blog\src\SampleUTFCode\SampleUTFCode>cl /c SampleUTFCode.cpp
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

SampleUTFCode.cpp
SampleUTFCode.cpp : warning C4819: ファイルは、現在のコード ページ (932) で表示
できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で
保存してください。
SampleUTFCode.cpp(10) : error C2001: 定数が 2 行目に続いています。
SampleUTFCode.cpp(12) : error C2143: 構文エラー : ')' が 'return' の前にありませ

のようなエラーが出ます。どうやら、BOM 無しなので os の標準コード(sjis 932)を使って読み込むために、puts(“増田 智明”); あたりで読み込みエラーになっているようです。

じゃあ、コマンドプロンプトで「chcp 65001」でコードページを変えたらどうなる?と思ったけど、変わりませんね。

コンタクトは、フォーラムの貼ってあるURLは間違っているようでページエラーになります。後でURLが変わっている?タイトルで検索してみると出てきましたので、リンクし直し

UTF-8シグネチャ(BOM)なしのソースコードを VC++ でコンパイルできる様にして欲しい | Microsoft Connect
http://connect.microsoft.com/site550/feedback/details/688472/utf-8-bom-vc

終了しているみたいですが、記録として要望をしておきました。

カテゴリー: C++ パーマリンク