3

如何在英特尔 C 编译器中定义俄语字符串?在 MSVS 2008 中,我这样做:

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

它有效。在 ICC 中不起作用。

4

1 回答 1

1

为了诊断问题,我会检查这些字符在编译过程中被编码的值。使用一些代码,例如:

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

于 2010-02-16T21:09:56.967 回答