Visual Studio の「文字セット」オプションについて問い合わせがあります。文字セットのオプションは次のとおりです。
- 設定されていません
- Unicode 文字セットを使用
- マルチバイト文字セットを使用する
Character Set の 3 つのオプションの違いを知りたいですか?
また、それらのいずれかを選択すると、英語以外の言語 (RTL 言語など) のサポートに影響しますか?
Visual Studio の「文字セット」オプションについて問い合わせがあります。文字セットのオプションは次のとおりです。
Character Set の 3 つのオプションの違いを知りたいですか?
また、それらのいずれかを選択すると、英語以外の言語 (RTL 言語など) のサポートに影響しますか?
これは互換性設定であり、Unicode が有効になっていない古いバージョンの Windows 用に記述されたレガシ コードを対象としています。Windows 9x ファミリのバージョンである Windows ME は、広く無視された最後のバージョンでした。「設定しない」または「マルチバイト文字セットを使用する」を選択すると、文字列を引数として受け取るすべての Windows API 関数が、文字char*
列をwchar_t*
文字列 (API のネイティブ文字列型) に変換する小さな互換性ヘルパー関数に再定義されます。
このようなコードは、デフォルトのシステム コード ページ設定に大きく依存します。コード ページは、フォント グリフを選択する Unicode に 8 ビット文字をマップします。コードを実行するマシンに正しいコード ページがある場合にのみ、プログラムは正しいテキストを生成します。コード ページが一致しない場合、値が 128 以上の文字は正しくレンダリングされません。
最新のコードでは、常に「Unicode 文字セットを使用する」を選択してください。特に、右から左へのレイアウトで言語をサポートする必要があり、開発マシンでアラビア語またはヘブライ語のコード ページが選択されていない場合。std::wstring
コードでorを使用wchar_t[]
します。実際の RTL レイアウトを取得するにWS_EX_RTLREADING
は、呼び出しでスタイル フラグをオンにする必要がありCreateWindowEx()
ます。
Hans はすでに質問に答えていますが、これらの設定には奇妙な名前が付いていることがわかりました。(正確には何が設定されていないのでしょうか? また、他の 2 つのオプションが非常に似ているのはなぜですか?) それに関して:
Windows での MBCS と UTF-8 の違いは、これらの問題をさらに詳しく説明しています。