Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировка "системной" консоли, всегда ли OEM 
V
    Опции темы
kami
Дата 13.2.2011, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Доброго времени суток всем!

Назрел вопрос следующего плана:
программа в ходе работы создает и запускает bat-файл (для обновления, перезагрузки и т.п.). Всё бы хорошо, но как обычно с консолью - проблема с русскими символами в путях к файлам. CharToOEM спасает, но вопрос в другом... 
Возможна ли ситуация, что cmd будет по умолчанию работать в ansi (или какой-либо другой) кодировке? Если да - как это узнать, чтобы определить - пользоваться перекодировкой или нет?
Интересуют системы от Win2k(Pro и Server) до Win2008 Server и Win7.

Заранее спасибо.
PM MAIL WWW   Вверх
CodeMonkey
Дата 13.2.2011, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



SetConsoleOutputCP + SetCurrentConsoleFontEx?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kami
Дата 13.2.2011, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(CodeMonkey @  13.2.2011,  00:53 Найти цитируемый пост)
SetConsoleOutputCP + SetCurrentConsoleFontEx?

Возможно, я неправильно написал, что мне нужно... 
Речь не идет о кодировке "console associated with the calling process.", т.е. сделанной (как я понимаю) с помощью AllocConsole, а о 
Код

ShellExecute(... '"c:\...\Рабочий стол\myCreatedFile.bat"', SW_HIDE)
. И вот как раз при создании myCreatedFile.bat, который потом нужно запустить, было бы неплохо узнать - а, собственно, в какой кодировке в него писать? 
Вывод (stdOutput) меня не интересует, просто если записать в .bat команду типа copy "%s" "%s", и в пути к файлу встретятся русские символы не в той кодировке, то cmd.exe говорит "не найден путь к файлу", соответственно - всё обламывается...

P.S. очень не хочется оказаться в роли "мне нужен X, как сделать Y", посему - если не прав, ткните в меня чем-нибудь, например - ссылкой smile В MSDN консольные функции посмотрел, но безрезультатно... все они ориентированы на уже созданную, имеющую соответствующие хендлы консоль, а мне нужно знать (или установить) кодировку в ходе подготовительных мероприятий.
PM MAIL WWW   Вверх
CodeMonkey
Дата 13.2.2011, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Ну таки cmd/bat файлы надо создавать в OEM кодировке.

По крайней мере так делают все (где под все я понимаю 99% народу)

По той простой причине, что кодировка консоли никак не влияет на внутренности программы. А внутри интерпретатора bat-ком используется OEM.

Ты, конечно, можешь сделать CHCP 1251 первой командой в bat-нике. И это будет работать для команды, скажем, echo "лалала", где "лалала" находится в Win1251.

Но эта же команда испортит вывод от, скажем, той же copy. И никак не исправит параметры к ней.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
kami
Дата 13.2.2011, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Цитата(CodeMonkey @  13.2.2011,  16:51 Найти цитируемый пост)
внутри интерпретатора bat-ком используется OEM.

Именно это и хотел услышать. Только думал "а всегда ли так, или только у меня". 
Спасибо!
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1050 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.