Имеется тестовое приложение с MFC, не unicode
Имеется код:
CString str;
str.LoadString ( IDS_TEST1 );
IDS_TEST1 — строка на русском.
Код работает.
Идем в панель управления, Regional and language options, Закладка Regional options (первая), в
верхнем комбобоксе выбираем латышский язык (Latvian).
Теперь в str загружаются знаки вопроса.
1. Это что, так и должно быть?
Отладка показала, что лажает функция WideCharToMultiByte. Похоже, строки в ресурсах хранятся в двухбайтовой кодировке, и эта функция должна их законвертить в однобайтовую. Видимо она не может найти двухбайтовые коды русских символов в латышской таблице, и поэтому заменяет их вопросами.
2. Как с этим бороться?
::setlocale( LC_ALL, "Russian_Russia.ACP" );
не помогает.
Здравствуйте, prozaeck, Вы писали:
P>Имеется тестовое приложение с MFC, не unicode
P>Имеется код:
P>P> CString str;
P> str.LoadString ( IDS_TEST1 );
P>
P>IDS_TEST1 — строка на русском.
Для того что бы хранить в CString текст не совместимый с системным локалом нужно переходить на Юникодную модель программы.
Если объявишь вместо CString -> CStringW то как минимум в дебаге должно отработать. Но если диалоги и всё остальное не юникодное, то дальше чем этот стринг твой юникод не уйдёт...