| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > кодировка "системной" консоли |
| Автор: kami 13.2.2011, 00:32 |
| Доброго времени суток всем! Назрел вопрос следующего плана: программа в ходе работы создает и запускает bat-файл (для обновления, перезагрузки и т.п.). Всё бы хорошо, но как обычно с консолью - проблема с русскими символами в путях к файлам. CharToOEM спасает, но вопрос в другом... Возможна ли ситуация, что cmd будет по умолчанию работать в ansi (или какой-либо другой) кодировке? Если да - как это узнать, чтобы определить - пользоваться перекодировкой или нет? Интересуют системы от Win2k(Pro и Server) до Win2008 Server и Win7. Заранее спасибо. |
| Автор: CodeMonkey 13.2.2011, 00:53 |
| SetConsoleOutputCP + SetCurrentConsoleFontEx? |
| Автор: kami 13.2.2011, 01:27 | ||
Возможно, я неправильно написал, что мне нужно... Речь не идет о кодировке "console associated with the calling process.", т.е. сделанной (как я понимаю) с помощью AllocConsole, а о
Вывод (stdOutput) меня не интересует, просто если записать в .bat команду типа copy "%s" "%s", и в пути к файлу встретятся русские символы не в той кодировке, то cmd.exe говорит "не найден путь к файлу", соответственно - всё обламывается... P.S. очень не хочется оказаться в роли "мне нужен X, как сделать Y", посему - если не прав, ткните в меня чем-нибудь, например - ссылкой |
| Автор: CodeMonkey 13.2.2011, 16:51 |
| Ну таки cmd/bat файлы надо создавать в OEM кодировке. По крайней мере так делают все (где под все я понимаю 99% народу) По той простой причине, что кодировка консоли никак не влияет на внутренности программы. А внутри интерпретатора bat-ком используется OEM. Ты, конечно, можешь сделать CHCP 1251 первой командой в bat-нике. И это будет работать для команды, скажем, echo "лалала", где "лалала" находится в Win1251. Но эта же команда испортит вывод от, скажем, той же copy. И никак не исправит параметры к ней. |
| Автор: kami 13.2.2011, 19:52 |
Именно это и хотел услышать. Только думал "а всегда ли так, или только у меня". Спасибо! |