如何在英特尔C编译器中定义俄语字符串? 在MSVS 2008中我这样做:
_wsetlocale(LC_ALL, L"Russian");
wprintf(L"текст");
它有效。 在ICC中不起作用。
答案 0 :(得分:1)
要诊断问题,我会检查这些字符在编译期间被编码的值。使用一些代码:
wchar_t *x = L"текст";
for(int i=0; x[i] != L'\0'; i++)
{
printf("%02x\n", x[i]);
}
如果"%02x"
,您可能希望将"%04x"
更改为sizeof(wchar_t) == 4
。
如果值不同,则可能是编译时问题,编译器使用不同的编码来解释源文件。
我会避免在源文件中使用代码点> U + 007F,将字符串外部化为资源文件并使用适当的编码加载它们。如果您愿意,可以尝试使用Unicode转义序列(如L"\u0442\u0435\u043a\u0441\u0442"
)。