beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2005-02-07 10:25 pm
Entry tags:

О сколько нам открытий чудных...

Программа.
#include <windows.h>
#include <stdlib.h>

int main (int argc, const char** argv){
  printf("Argv[1]: `%s`\n", argv[1]);
  return 0;
}


Компилируем. Запускаем под Windows с аргументом абвгде.

Получаем `рстуфх` или что-то в этом роде...

Так вот я и выяснил, что пароль, указанный в командной строке, и пароль, введенный интерактивно, прилетают в разных кодировках...

ну да, логично

[identity profile] dadcaptain.livejournal.com 2005-02-07 07:37 pm (UTC)(link)
Консоль работает в режиме совместимости в 866 не иначе.
ext_659502: (Default)

[identity profile] some41.livejournal.com 2005-02-07 07:46 pm (UTC)(link)
argv[1] видимо пропущенно :)
да, есть такое дело. косяк

Угу, спасибо.

[identity profile] beldmit.livejournal.com 2005-02-07 08:31 pm (UTC)(link)
Проставил пропущенный argv[1].
Это не косяк. Это так задумано...
ext_659502: (Default)

Re: Угу, спасибо.

[identity profile] some41.livejournal.com 2005-02-07 08:34 pm (UTC)(link)
я в курсе, что так задумано, но имхо - это косяк

(Anonymous) 2005-02-07 07:58 pm (UTC)(link)
Смотря откуда запускать.

А то что консоль и GUI работают в разных режимах - само собой.
Иначе бы в виндах просто не было пожжерки 866 :-)

Если ты когда нибудь пользовался консольными [де]кодировщиками аудио, типа lame, oggenc - то что творится с тэгами внутри песен (точнее как оно их показывает, если они русские)...


Sorry, но ты слишком погрузился в Юникс и разные "Решение сложных задач на C++", от земли отрываешься :P

Угу

[identity profile] beldmit.livejournal.com 2005-02-07 08:49 pm (UTC)(link)
У меня консольное приложение. Кроссплатформенное. Такая вот у меня земля.
Про разность режимов я прекрасно понимаю. Но то, что я доставал кодировку через GetConsoleCP, а еще бывает GetACP, повергло меня в глубокие раздумья.