2010-02-14 36 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")。

相關問題