0

マイクロソフトが述べたように:

マルチバイト文字セット、特に 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を使用していますか?もしそうなら、なぜstringDBCS を取り上げないのでしょうか? または単に\u6211収まるからwchar_tですか?

ケース 4:

  • 「Unicode 文字セットを使用」を選択します。 wstring chineseStringW = L"我是路人"

それで、エンコーディングはUTF16-LEになりましたか?

4

0 に答える 0