Как научить консольные виндовые программы показывать русские символы? Например мне нужно читать из консоли cmd ls список файлов в каталоге, но русские символы не выводит. зарание спасибо!
Надо просто выводить их в расчёте на русскую кодовую страницу ДОС (CP-866, если склероз не изменяет), а не как в ГУИ, где используется русская страница Винды (CP-1251).
я только не понял какое это имеет отношение к форумы WASM ?? вообще раньше в windows было mode cp prepare ... mode cp select ... что то аналогичное нужно и в современных виндах прописать где то в свойствах у меня на русской xp32sp3 таких проблем нет
Вывод из программы делается вполпинка: Код (Text): #include <stdio.h> #include <locale.h> int main () { setlocale (LC_ALL, NULL); printf ("привет мир\n"); return 0; } Теоретически, это может помочь и со вводом из дочерних процессов.
_NEBO есть подозрение что данные в своих прогах вы получаете в строках юникод соответственно и преобразований должно быть 2 - из юникода в анси а потом в оем 866 впрочем привели бы код команда dir русские буквы в именах файлов выводит ???? dir c:
с виндовыми консольными программами есть некая закавыка: например, если ввести telnet /?, то получим бред в другой кодировке - это косяк в программе. В telnet.exe. Как минимум, на XP без СП, СП1 и СП2 точно. Подозреваю, что есть еще несколько программ, с аналогичной проблемой. Но большинство все-таки показывают то, что надо. Имеется в виду именно это? Или как самому печатать в консоль по русски? Или все консольные утилиты вместо русского печатают знаки вопроса? Для второго случая (на который подумали в #2, 6, 8 и 9) ответ практически дали. Для последнего - надо смотреть настройки, а также уточнить - версия ОС, язык, выбранная локальная кодировка, и что за файлы не отображаются - из FAT32? С флешки?
нет, не все. например ping - "Превышен интервал ожидания для запроса." cmd ls наберите в ХР (в любой RU версии) и если в каталоге файлы на русском то вместо имен будут - "?????" NTFS не помогает.
_NEBO ls насколько мне известно не принадлежит к batch командам Windows. За то что она выводит и как пускай отдувается ее автор.
Ы, я думал `cmd ls' -- это cmd.exe запущенный с какими-то опциями. А если ты *nix'овые утилиты пытаешься использовать в вин, то я думаю надо просто выставить LC_* переменные окружения в нужные значения. Правда, вероятно, для начала придётся локаль создать. Точнее ответить не могу, пока вопрос не будет сформулирован чётче. Я честно говоря не очень понимаю в чём проблема. В том, что ls в cmd.exe криво работает? Ну дык выполни команду: Код (Text): export LC_ALL=ru_RU.CP866 По идее должно заработать. Хотя если в cmd.exe в качестве командного интерпретатора не bash, а родной вендовый, то экспортировать переменную окружения надо как-то иначе. cmd.exe не понимает слова export. Хотя я бы, пожалуй, не заморачивался по-поводу настройки софта под убогий cmd.exe. Я б поставил Xming, и cygwin с rxvt. И использовал бы rxvt вместо cmd.exe. Ну или gnome-terminal, или ещё какой-нибудь терминал, какой больше нравится.
Была у меня проблема с выводом информации полученной через WMI на русской винде. Получал unicode, на выводе русских букв - процесс зависал. Выяснил что нормально отрабатывает юникод только WriteConsole. Для записи в файл через потоки использовал imbue с utf8.
Как уже сказали нет в Win такой команды. Это запуск отдельного приложения - ls.exe У тебя стоит или CygWin, или MinGW. Скорее всего первый. Вот и копай как в нём вывод настроить нормальный. Возможно поможет (обычно помогает ) добавить в переменные среды переменную LC_ALL=ru_RU.CP866