インテル C コンパイラーでロシア語の文字列を定義するにはどうすればよいですか? MSVS 2008 では、次のようにします。
_wsetlocale(LC_ALL, L"Russian");
wprintf(L"текст");
そして、それは機能します。ICC では動作しません。
問題を診断するために、コンパイル中にこれらの文字がどのような値としてエンコードされているかを確認します。次のようなコードを使用します。
wchar_t *x = L"текст";
for(int i=0; x[i] != L'\0'; i++)
{
printf("%02x\n", x[i]);
}
"%02x"
それを"%04x"
ifに変更したい場合がありsizeof(wchar_t) == 4
ます。
値が異なる場合は、コンパイラがソース ファイルを解釈するために異なるエンコーディングを使用しているコンパイル時の問題である可能性があります。
コード ポイント >U+007F をソース ファイルで使用することは避け、文字列をリソース ファイルに外部化し、適切なエンコーディングを使用してそれらをロードします。必要に応じて、Unicode エスケープ シーケンス ( などL"\u0442\u0435\u043a\u0441\u0442"
) を使用してみてください。