Даже в Windows 7, можно ли сделать “dir” и смочь ли видеть имена файлов, который имеет unicode символы?

Это несколько связано с вопросом

В Windows 7 dir или дерево не могут показать unicode символы, даже начав cmd с cmd/U

Даже в Windows 7, я нашел, что единственный способ, которым я могу заставить unicode входить в файл,

> cmd /U
> dir /B > files.txt

файл будет в "Unicode", когда я откроюсь в Блокноте и попробую "Сохранить Как", и если я dir /B > files.html и откройте файл HTML в Firefox, он может показать Кодирование использования UTF-16 (или LE UTF-16).

но, если я хочу видеть, что это на экране вместо того, чтобы иметь его переходит к файлу, это все еще невозможно. Существует ли способ заставить его произойти? Возможно так или иначе говоря cmd не показывать непечатаемые символы как"?"

Обновление: Я попробовал cmd.exe, удар cygwin на окнах и PowerShell. Они - то же. Кроме того, если я изменяю "Свойства-> Шрифт" к Consolas или Lucida Console, существует некоторое улучшение - теперь это не вопросительный знак, но является или квадратной границей или квадратом с вопросительным знаком в нем.

Более дорогие компьютеры Mac с Mac OS X могут сделать это. Бесплатная Ubuntu может сделать это также.

5
задан 20.03.2017, 12:17

4 ответа

На основе Вашего имени пользователя я подозреваю, что Вы главным образом работаете с азиатскими языками.

Инструменты Windows обычно работают в unicode режиме (как Вы видели путем передачи по каналу вывода dir в файл и открытие, что файл с редактором):

  1. инструмент делает свой материал
  2. это производит unicode символы
  3. другая программа берет этот вывод и должна отобразить его.

для отображения любого символа на экране, программа от шага 3 имеет к поиску глиф, подходящий для данной последовательности байта. пример:

  • 0x65 карты к другому глифу в каждом шрифте (так то, чтобы выглядеть по-другому от шрифта до шрифта)

  • 0x937 'Ω' (греческая 'омега') отображается на другой глиф в каждом шрифте также

этот отображающийся только работает, ЕСЛИ шрифт имеет глиф для данной последовательности байта. иначе визуальный результат отличается, иногда Вы видите'?', иногда ромбы и т.д.

снова: dirпроизводит bytesequences, которые иногда находятся просто в диапазоне ASCII, иногда они находятся в диапазоне Unicode (в зависимости от того, какие имена файлов он находит). это отправляет эти последовательности в другую программу, которая ответственна за то, что на самом деле представила bytesequences., чтобы смочь отобразить эти последовательности, эта программа должна отобразить последовательность на глиф. чтобы сделать это, это должно искать в шрифте глиф. если шрифт не имеет глифа для данной последовательности, то программа не может отобразить последовательность байта, произведенную, например, dir.

таким образом решение Вашей проблемы (видящий любой unicode-символ в 'консоли / терминал' окон): используйте шрифт для программы, которая имеет (почти) каждый глиф для (почти) любого данного unicode bytesequence в нем.

1
ответ дан 07.12.2019, 17:39

https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how

Использовать chcp 65001 изменить кодовую страницу на UTF8 и использовать Lucida Console.

0
ответ дан 07.12.2019, 17:39

Это не имеет никакого отношения к кодировке, так как консоль Windows всегда использует Unicode внутренне. Символы просто не доступны в шрифтах, которые Вы используете, которые разработаны для программирования и европейских языков. У меня нет доступа к Windows в данный момент, но мне remeber, что я мог распечатать греческие символы после переключения на шрифт Lucida Console. Используя шрифт как DejaVu Sans Mono мог бы работать.

0
ответ дан 07.12.2019, 17:39

Хорошо, это - использование решения PowerShell:

1) Нажмите Start кнопка в Windows 7
2) Теперь, в пустой строке, ввести PowerShell
3) Выбрать PowerShell ISE <-отмечают, что это ISE

Теперь, если Вы делаете ls, Вы сможете видеть unicode символы...

4) если Вы также используете chcp 65001, затем, если Ваша программа распечатает символы UTF-8, то они будут приятно отображены также.

Вы можете также ls > list.txt и затем type list.txt и содержание обнаруживается в символах Unicode также.

tree все еще не покажет unicode символы.

также, в PowerShell ISE, cmd /U /C dir /B не будет работать также.

ls -R будет.

0
ответ дан 07.12.2019, 17:39

Теги

Похожие вопросы