Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.05.2018, 16:31   #1
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
По умолчанию CMD, изменение кодировки

Добрый день. Не нашёл раздел, где можно спросить про CMD.
Как можно сделать, чтобы CMD, запущенный из программы, выдавал результат в кодировке 1251?
CMD по умолчанию используется 866 и эта кодировка искажает русский текст.

Я пишу команду так. Что в ней неправильно:
Код:
str_command = "cmd.exe /c Chcp 1251 & dir " & """C:\Users\User\Desktop\*.txt""" & " /b /s"
Результат у меня выводится не в файл, а в переменную с помощью других инструментов.
Drekon вне форума Ответить с цитированием
Старый 29.05.2018, 16:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Читаем cmd /? и:
Цитата:
Чтобы указать в одной строке несколько команд, следует разделить их символами '&&' и заключить в кавычки.
p51x вне форума Ответить с цитированием
Старый 29.05.2018, 17:00   #3
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
По умолчанию

Не получается:
Код:
str_command = "cmd.exe /c ""Chcp 1251"" && ""dir C:\Users\User\Desktop\*.txt /b /s"""
Drekon вне форума Ответить с цитированием
Старый 29.05.2018, 17:07   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Код:
cmd.exe /c "Chcp 1251 && dir C:\Users\User\Desktop\*.txt /b /s"
поробуйте
p51x вне форума Ответить с цитированием
Старый 29.05.2018, 17:12   #5
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
По умолчанию

p51x, русский текст искажается.
Drekon вне форума Ответить с цитированием
Старый 29.05.2018, 17:24   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Пишите батник. Ну или запускайте сmd /u, получайте в юникоде и работайте как белый человек.
p51x вне форума Ответить с цитированием
Старый 29.05.2018, 17:28   #7
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
По умолчанию

так тоже искажается русский текст и между символами вставляются пробелы:
Код:
str_command = "cmd.exe /u /c dir ""C:\Users\User\Desktop\*.txt"" /b /s"
Drekon вне форума Ответить с цитированием
Старый 29.05.2018, 17:33   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Они не искажаются и пробелы не вставляются. Выводите юникод правильно и все.
p51x вне форума Ответить с цитированием
Старый 29.05.2018, 17:37   #9
Drekon
Пользователь
 
Регистрация: 25.04.2018
Сообщений: 45
По умолчанию

Я попробовал преобразовать полученные данные из юникода с помощью инструментов языка, но часть данных испорчена. Остается пробовать Win32 API функции для перевода из юникода в ANSI.
Может быть проблемы ещё и с инструментом, который запускает CMD.
Drekon вне форума Ответить с цитированием
Старый 29.05.2018, 17:48   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,706
По умолчанию

Тут другой вопрос - а нужна ли вам возня с cmd, если вы все равно упарываетесь по винапи... список файлов итак можно вывести.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение кодировки текста werdana C++ Builder 3 20.10.2012 02:26
Изменение кодировки combays PHP 2 05.01.2012 11:49
Изменение кодировки файла. goodwen C# (си шарп) 4 15.12.2011 19:12
Изменение кодировки в c# Andreyka Общие вопросы C/C++ 0 04.06.2010 19:42
Изменение кодировки Ilya9999 PHP 2 27.05.2010 19:59