Как сохранить список каталогов с файлами, содержащими русские или китайские символы (Windows7)

Мне нужно время от времени составлять список файлов с компакт-диска, который я получаю. Имена этих файлов часто содержат символы других систем письма, таких как русская кириллица (Добродошли.doc) или упрощенный/традиционный китайский (孟子譯注.pdf). Мой компьютер (под управлением Windows 7, польский язык) правильно отображает имена файлов, открывает файлы, сохраняет файлы в других местах, позволяет редактировать файлы с помощью различных программ и т. д. Однако, когда я создаю список каталогов (с помощью команды dir ) Я всегда получаю вопросительные знаки и другие странные символы вместо других (китайских, русских) символов - вывод команды dir по умолчанию, похоже, по умолчанию написан в ANSI - вместо Unicode/UTF8.

Пример:

02.03.09 21:13 15˙584˙500 ??????(??????).pdf     = these three files were in Chinese
02.03.09 03:11 18˙638˙982 ????(???).pdf
24.03.08 17:25 61˙141˙454 ???®????Ż(???).pdf 
18.03.13 16:00 1˙088 ????.txt                    = this file's name was in Russian 
02.03.09 21:20 26˙083˙641 Transformations-of-Ming.pdf

(получается с помощью контекстного меню Windows, вызываемого правой кнопкой мыши, «Печать списка каталогов»)

Я пробовал искать в Интернете различные советы по этой проблеме, и ни одно из предложенных решений не решило мою проблему - в качестве альтернативы я нашел (кажущиеся устаревшими) ответы о том, что проблема в настоящее время не может быть решена в различных средах. Может быть, что-то изменилось - может быть, есть решение, сразу или после того, как что-то изменилось в реестре Windows? Или же, если нет простого решения для пакетного программирования - может быть, есть какое-то готовое программное обеспечение, которое я мог бы скачать (бесплатно или купить) для решения моей проблемы?

Я не знаком с программированием на Java или php и не знаю, как работать с Ruby (здесь есть похожие вопросы, но они ограничены этими средами). Я могу сказать, что застрял на пакетном программировании MS-DOS - я был очень хорош в пакетном программировании в конце 1980-х до середины 1990-х годов, а также в даже сложном WordPerfect 5.1 для редактирования/создания макрокоманд DOS и других типы строкового программирования - может быть, я слишком стар (не спрашивайте меня, сколько лет, пожалуйста), чтобы изучать продвинутое объектно-ориентированное программирование (я никогда не был программистом, просто компьютерным фанатом, но после Windows 98 мне пришлось бросить ).

Спасибо за любые предложения - я попробую их все (если есть).


person Kasia Luiss    schedule 16.04.2013    source источник
comment
Командная строка некорректно отображает символы Unicode по умолчанию. Будьте уверены, ваше приложение работает правильно.   -  person Cody Gray    schedule 16.04.2013
comment
comment
@Endoro - я видел, проверил все возможные кодировки (изначально у меня была 852, но даже изменение ее на кириллические cp'ы (855, 860, 1251) или на юникод (65001) не изменило ситуацию для русского, не чтобы сказать Хан. Пробуем UTF16 с прямым или обратным порядком байтов cp (1201 или 1200 — числа взяты из en.wikipedia .org/wiki/Code_page) - в результате выдавалось сообщение об ошибке Неверная кодовая страница. Какой cp следует использовать? Может быть, мне нужно изменить его навсегда, чтобы загружаться с ним, так как программы (кроме Cmd.exe), которые вы запускали перед назначением новой кодовой страницы использовать исходную кодовую страницу?Но каталог cmd.exe   -  person Kasia Luiss    schedule 16.04.2013
comment
@CodyGray - я не уверен, что понял твою идею. Какое приложение вы имеете в виду - cmd.exe? Это приложение запускает пакетную команду dir, и это единственное, с которым у меня проблемы. И под корректной работой вы понимаете не корректное отображение символов Юникода из коробки, да? То есть вы хотите сказать, что у этой проблемы нет никакого решения?   -  person Kasia Luiss    schedule 16.04.2013
comment
Не могу ответить на ваш вопрос. У меня нет опыта с китайским, только с русским :(   -  person Endoro    schedule 16.04.2013
comment
@Endoro - Итак, что бы вы порекомендовали для русского, но также и для польского (мой родной язык)? а) какой цп? б) изменить cp во время работы или изменить его навсегда с некоторой конфигурацией? Как мне пропустить старый файл DOS config.sys! ;(   -  person Kasia Luiss    schedule 16.04.2013
comment
Я к тому, что если я найду одно решение для русского, то для китайского мне останется только искать другое. Половина моих проблем решена (даже если только 1/3, потому что есть польские файлы, но обычно польские специальные буквы конвертируются в основные латинские). Очевидно, что на запуск каталога дважды (трижды), изменение cp между ними (даже при перезагрузке машины), а затем просто на сравнение файлов (с помощью Word?) уходит меньше времени, чем вводить все эти имена вручную (даже копирование и вставка из Проводника Windows в Блокнот или Word требует выполнения файлов по одному).   -  person Kasia Luiss    schedule 16.04.2013
comment
Я так делал раньше, с несколькими файлами на CD/falsh диске работает хорошо, но недавно я получил CD с 384 китайскими файлами в 8 китайских папках с несколькими подпапками и подпапками (все на китайском языке) и это заставило меня отчаянно искать решение. Аналогичная вещь с русским диском, всего около 200 файлов, я год назад проходил.   -  person Kasia Luiss    schedule 16.04.2013
comment
Консоль работает на устаревшей кодовой странице OEM, она не сможет отображать эти глифы. Единственное, что у вас есть, это CHCP 65001, чтобы переключиться на utf-8 и выбрать другой шрифт, например Consolas или Lucinda. Китайский по-прежнему будет проблемой, в этих шрифтах нет глифов для него. Проводник Windows, конечно, не будет иметь этой проблемы, рекомендуется.   -  person Hans Passant    schedule 16.04.2013


Ответы (3)


Во-первых, вам нужен шрифт True Type (TTF) с поддержкой иностранных символов. Установите шрифт:

  • щелкните правой кнопкой мыши на строке заголовка
  • выберите Свойства/Шрифты
  • если вашего шрифта НЕТ в списке, то его необходимо предварительно добавить в реестр с ключом HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont\

После установки шрифта в консоли отображаются все иностранные символы, поддерживаемые этим шрифтом. Также работают такие команды, как dir или перенаправление в файл dir > dir.txt. И нет необходимости менять кодовую страницу с chcp.

person Endoro    schedule 16.04.2013
comment
Спасибо за ваш совет. Я менял cp, потому что вы направили меня туда, и это казалось логичным из-за моего опыта работы с DOS. Я проверил, что у меня есть Lucida Console и Lucidas в качестве двух шрифтов ttf, установленных в консоли cmd. Оба имеют кириллические буквы, но ни отображение, ни экспорт с помощью dir › dir.txt (у обоих вопросительные знаки вместо буквы) не идут. Не знаю почему. Я добавил третий шрифт DejaVue Sans Mono, как описано более подробно в cristianadam.blogspot.tw/2009/11/, в котором тоже есть кириллица, но это не помогло - person Kasia Luiss; 16.04.2013
comment
Я не знаю, какой шрифт ttf использовать, у меня их сотни на моем компьютере. Какой шрифт вы использовали? Я прочитал Необходимые критерии для того, чтобы шрифты были доступны в командном окне (support.microsoft.com/default.aspx?scid=kb;EN-US;Q247815), и я остановился перед добавлением азиатского шрифта (слишком много деталей, чтобы их можно было проверить раньше), но мой опыт работы с кириллицей заставляет меня сомневаться, что это сработает. Отображение кириллических, китайских и других символов (как и в файлах, приходящих со спамом - японский, арабский...) предусмотрено в Windows, но не в окне команд. Я напишу еще раз, когда я это сделаю, может быть, завтра. - person Kasia Luiss; 16.04.2013
comment
У меня было два шрифта Lucida Console и Consolas - я сделал ошибку. Теперь я удалил их обоих из реестра и установил DejaVu Sans Mono по умолчанию, и в поле команды появились буквы кириллицы, но файл dir.txt содержит ??? вместо русских букв (проверено Блокнотом, WordPad и MS Word, смена шрифта не влияет). Беспомощный! - person Kasia Luiss; 16.04.2013
comment
Взял Lucida Console, работает с русским языком. Я могу создавать файлы с киррилическими именами файлов, перечислять их с помощью dir, сохранять имена файлов в файле и отображать этот файл с помощью команды `type`. Пожалуйста, поверьте мне, иначе я могу сделать скриншот. - person Endoro; 16.04.2013
comment
почему кодовая страница консоли влияет на данные, отправляемые в канал (перенаправление)? существует ли утилита для просмотра списка каталогов, которая игнорирует кодовую страницу консоли при использовании канала? - person n611x007; 02.12.2014

Установка chcp 65001 решила проблему для меня. Проблема была в неправильной кодовой странице, по крайней мере, в моем случае.

person Moonwalker    schedule 19.12.2014

Используя Windows'95, запустите диспетчер файлов, (думаю = тот же, что и раньше + Windows 3.1), он находится в папке Windows, затем перейдите к опции смены шрифта и выберите кириллицу 1. Теперь 1 может видеть русский язык имена файлов. Window XP, подсказка @ DOS использовать CHCP 866.

person Andrew Hodson    schedule 02.06.2015
comment
Все упомянутые вами операционные системы устарели и не поддерживаются. Вопрос был про Windows 7. - person Ryan Bemrose; 03.06.2015