マイクロソフトが述べたように:
マルチバイト文字セット、特に 2 バイト文字セット (DBCS)。マルチバイト文字セットは、多くのアジア言語で多数の文字を表す手段を提供します。
DBCS コード ページは、日本語や中国語などの言語に使用されます。このようなコード ページでは、一部の文字に 2 バイト エンコーディングがあります。
したがって、上記に基づいて、矛盾する結果が得られます: (4 つのすべての可能なケースのうち 2 つ、4 つのうち 3 つのケースの下で 3 つの質問があります)
したがって、ケース 1 (矛盾):
- を選択する
Use Multi-Byte Character Set
と、次のように DBCS エンコーディングが自動的に選択されます。
string chineseString = "我是路人";
しかし代わりにコンパイラは言った:
警告 C4566: ユニバーサル文字名 '\u6211' で表される文字は、現在のコード ページでは表現できません (1252)
1252 は西洋言語のエンコーディングのみであるため、これは構成自体と矛盾しています。ここで MBCS/DBCS を使用することになっていませんか?
ケース 2 (理解できる、矛盾しない):
- 「Unicode 文字セットを使用」を選択します
ここで、エンコーディングを指定する必要があると想定しているので、次のようにします。
string chineseString = u8"我是路人"
これは機能し、私にとって理にかなっています。
ケース 3(矛盾):
- 「マルチバイト文字セットを使用」を選択します。
wstring chineseStringW = L"我是路人"
エンコーディングDBCSを使用していますか?もしそうなら、なぜstring
DBCS を取り上げないのでしょうか? または単に\u6211
収まるからwchar_t
ですか?
ケース 4:
- 「Unicode 文字セットを使用」を選択します。
wstring chineseStringW = L"我是路人"
それで、エンコーディングはUTF16-LEになりましたか?