Приветствую! Проблема собственно вот в чем. Писал программу на русифицированной винде, поэтому особо не заморачиваясь переводил Unicode в MultiByte c помощью функции WideCharToMultiByte с параметром CodePage = CP_ACP. Вообще, данный параметр не рекомендует сам Microsoft. Потом попробывал написанную программу на нерусифицированной винде. Тут начались траблы, после перевода WideCharToMultiByte возвращаемый буфер состоял из примерно такого: "test1 ????123qwe??? ???123??", тоесть на месте русских букв стояли знаки вопроса. Посмотрел реестр (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage) оказалось, что в русифицированной винде параметр "CP_ACP" равен 1251, а в нерусифицированной "CP_ACP" равен 1252. Если поменять с 1252 на 1251, то все работает, но этот способ, как мне кажеться, очень не правильный (менять системные настройки из-за того, что что-то не работает в твоей программе - плохо). Пробывал также функцию setlocale, но она не помогает. Ну собственно и вопрос, как сделать чтобы русские буквы конвертировались нормально не меняя системных настроек или все же придеться их менять? Спасибо.
Лично я всегда после переустановки винды меняю настройки кодировок, т.к. не все русские проги, даже на русифицированной винде отображают текст корректно именно из-за виндузятных, дефолтных настройках, потому параметры: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] "1250"="1251" "1251"="1251" "1252"="1251"
mrcrown Так не хотелось бы...может есть все таки нормальное решение проблемы? reverser Тоесть юзать в функции WideCharToMultiByte вместо параметра CP_ACP параметр 1251? А вообще есть ли такой параметр? или я что-то не так понял... Разное, преимущественно в файл сохраняю.