Проблема с кодировкой в нерусифицированной винде!

Тема в разделе "WASM.WIN32", создана пользователем dev, 31 июл 2009.

  1. dev

    dev New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2008
    Сообщения:
    39
    Приветствую!
    Проблема собственно вот в чем. Писал программу на русифицированной винде, поэтому особо не заморачиваясь переводил 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, но она не помогает. Ну собственно и вопрос, как сделать чтобы русские буквы конвертировались нормально не меняя системных настроек или все же придеться их менять?
    Спасибо.
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Лично я всегда после переустановки винды меняю настройки кодировок, т.к. не все русские проги, даже на русифицированной винде отображают текст корректно именно из-за виндузятных, дефолтных настройках, потому параметры:
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
    "1250"="1251"
    "1251"="1251"
    "1252"="1251"
     
  3. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Юзай 1251 вместо CP_ACP. А что ты потом делаешь с конвертированным текстом?
     
  4. dev

    dev New Member

    Публикаций:
    0
    Регистрация:
    25 авг 2008
    Сообщения:
    39
    mrcrown
    Так не хотелось бы...может есть все таки нормальное решение проблемы?

    reverser
    Тоесть юзать в функции WideCharToMultiByte вместо параметра CP_ACP параметр 1251? А вообще есть ли такой параметр? или я что-то не так понял...
    Разное, преимущественно в файл сохраняю.