キリル文字を含む Unicode CLR 文字列を返すこのコード フラグメントがあるとします。
property String^ EIDErrorDescriptionSr {
String^ get()
{
switch(EIDErrorCode)
{
case EID_OK: return "Операција успешно завршена";
...
このアセンブリを参照する C# コードでプロパティを読み取ると、大量の "?" が表示されます。C++ コンパイラが文字列を 1 バイト文字に「フラット化」したかのように。
C++ ソース ファイルを UTF-8 (Unicode も含む) として保存しましたが、ansi 以外のすべての文字についてコンパイラから常に次の警告が表示されます。
警告 C4566: ユニバーサル文字名 '\u041E' で表される文字は、現在のコード ページでは表現できません (1252)
さて、コンパイラにリテラルをユニコードとして扱うように強制するコンパイラスイッチはありますか? 見つからないようです。