Кодировка в консоли на MV С++ 6.0

Тема в разделе "LANGS.C", создана пользователем Y_Mur, 11 мар 2007.

  1. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Решил для общего развития освоить наконец С++ консоль (MV С++ 6.0), и с удивлением обнаружил, что она работает в ДОС кодировке:
    Код (Text):
    1. #include "stdafx.h"
    2. #include "stdio.h"
    3. //#define UNICODE // <--это не влияет на результат
    4. int main(int argc, char* argv[])
    5. {
    6.     printf("= = = Русский текст = = =\n");
    7.     printf("= = = ђгббЄЁ© ⥪бв = = =\n");
    8.     return 0;
    9. }
    cprintf из conio.h ведёт себя также.
    Есть сишный способ переключить кодировку или только писать "белиберду" вместо русского текста?
    Или я не те .h подключаю?
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Конечно не влияет :) Пиши так, и будет тебе счастие:

    wprintf(L"= = = Русский текст = = =\n");
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Y_Mur
    Можно преобразовать кодировку виндовыми апишками OemToChar и CharToOem.
     
  4. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а при чем тут вообще C?
     
  5. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    _DEN_
    Нету счастья - вообще никакого результата нету :dntknw:(

    Nouzui
    При том что преобразовать кодировку через OemToChar и CharToOem не проблема -
    непонятно почему виндовый MV С++ 6.0 компилятор это выдаёт, и как с этим бороться на его уровне.
     
  6. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    как сделать так, чтобы строки, набранные в исходнике в виндовой кодировке, записывались в бинарник перекодированными в ASCII? Не знаю, нет у компилера такой опции
    ставь в редакторе ASCIIшный шрифт и пиши в ASCII )) только нужно будет еще такую раскладку клавиатуры найти

    ps: а вообще здесь, кажется, уже была тема про кодирование строк перед компиляцией с использованием pre-build steps. Не помню, к чему там в итоге пришли.. поищи, если хочешь
     
  7. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Nouzui
    Нет не так конвертировать кодировку при наборе текста тоже не проблема (просты видок у проги специфический получается)
    Но когда я в МАСМЕ работаю с API: GetStdHandle \ WriteFile - виндовая кодировка прекрасно выводится на консоль без всяких преобразований.
    Понятно что и в С можно эти АПИ задействовать, но хотелось бы именно штатными средствами С
     
  8. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а ты уверен? проверь
     
  9. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    SetConsoleOutputCP ?
     
  10. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Nouzui
    Да увы ты прав - это она в файл прекрасно с консоли перенаправляется :dntknw:
    Значит дело действительно в самой консоли и С тут не при чём :dntknw:
    Тогда вопрос снят. Всем спасибо.
     
  11. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    rmn
    О класс - спасибо - буду пробовать :)))
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706