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