Неверно. chcp меняет кодировку для некоторых функций ввода/вывода с консоли/на консоль. cmd такими функциями не пользуется (т.к. пользуется unicode-функциями), поэтому на запуск и передачу параметров эта установка вообще никак не влияет, а меняет только вывод запускаемой программы. Вот вся цепочка передачи символов при запуске программы, которая пользуется ansi-функциями для получения параметров и вывода их на экран:Boris писал(а):т.е. я правильно понял, что chcp 65001, заданный в командной строке при вызове программы с параметрами передает в программу строку в UTF-8 ? А остальное поведение зависит от того, что программа ждет и как именно она читает эти параметры командной строки?
Console -> (UTF16) -> cmd -> (UTF16) -> Windows -> (GetACP/1251) -> ProgramAnsi -> (GetConsoleOutputCP/chcp) -> Console
А вот так будет если она будет пользоваться unicode-функциями:
Console -> (UTF16) -> cmd -> (UTF16) -> Windows -> (UTF16) -> ProgramUnicode -> (UTF16) -> Console
Если вы ищете способ настройками заставить передать UTF-8 в ansi-функции получения параметров, то единственный способ это сделать не меняя кода - изменить системную настройку (GetACP), но я сомневаюсь в работоспособности этого варианта, т.к. это повлияет на всю систему и скорей всего много чего сломается.