2010-02-14 37 views
3

如何在英特尔C编译器中定义俄语字符串? 在MSVS 2008我这样做:英特尔C编译器和L“”前缀

_wsetlocale(LC_ALL, L"Russian"); 
wprintf(L"текст"); 

它的工作原理。 在ICC中不起作用。

回答

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")。

相关问题