2010-02-14 16 views
3

Comment puis-je définir des chaînes russes dans Intel C Compiler? En 2008 MSVS je fais:Intel C Compiler et L "" préfixe

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

Et il fonctionne. Dans ICC dans ne fonctionne pas.

Répondre

1

Pour diagnostiquer le problème, je vérifie pour voir quelles valeurs sont encodées pendant la compilation. Avec un code comme:

wchar_t *x = L"текст"; 
for(int i=0; x[i] != L'\0'; i++) 
{ 
    printf("%02x\n", x[i]); 
} 

Vous pouvez changer cela "%02x"-"%04x" si sizeof(wchar_t) == 4.

Si les valeurs sont différentes, il s'agit probablement d'un problème de compilation lorsque les compilateurs utilisent des codages différents pour interpréter les fichiers sources. J'éviterais d'utiliser les points de code > U + 007F dans les fichiers sources, d'externaliser les chaînes dans les fichiers de ressources et de les charger en utilisant un encodage approprié. Si vous le souhaitez, vous pouvez essayer d'utiliser des séquences d'échappement Unicode (comme L"\u0442\u0435\u043a\u0441\u0442").