Это несколько связано с вопросом
В 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 может сделать это также.
На основе Вашего имени пользователя я подозреваю, что Вы главным образом работаете с азиатскими языками.
Инструменты Windows обычно работают в unicode режиме (как Вы видели путем передачи по каналу вывода dir
в файл и открытие, что файл с редактором):
для отображения любого символа на экране, программа от шага 3 имеет к поиску глиф, подходящий для данной последовательности байта. пример:
0x65 карты к другому глифу в каждом шрифте (так то, чтобы выглядеть по-другому от шрифта до шрифта)
0x937 'Ω' (греческая 'омега') отображается на другой глиф в каждом шрифте также
этот отображающийся только работает, ЕСЛИ шрифт имеет глиф для данной последовательности байта. иначе визуальный результат отличается, иногда Вы видите'?', иногда ромбы и т.д.
снова: dir
производит bytesequences, которые иногда находятся просто в диапазоне ASCII, иногда они находятся в диапазоне Unicode (в зависимости от того, какие имена файлов он находит). это отправляет эти последовательности в другую программу, которая ответственна за то, что на самом деле представила bytesequences., чтобы смочь отобразить эти последовательности, эта программа должна отобразить последовательность на глиф. чтобы сделать это, это должно искать в шрифте глиф. если шрифт не имеет глифа для данной последовательности, то программа не может отобразить последовательность байта, произведенную, например, dir
.
таким образом решение Вашей проблемы (видящий любой unicode-символ в 'консоли / терминал' окон): используйте шрифт для программы, которая имеет (почти) каждый глиф для (почти) любого данного unicode bytesequence в нем.
https://stackoverflow.com/questions/388490/unicode-characters-in-windows-command-line-how
Использовать chcp 65001
изменить кодовую страницу на UTF8 и использовать Lucida Console.
Это не имеет никакого отношения к кодировке, так как консоль Windows всегда использует Unicode внутренне. Символы просто не доступны в шрифтах, которые Вы используете, которые разработаны для программирования и европейских языков. У меня нет доступа к Windows в данный момент, но мне remeber, что я мог распечатать греческие символы после переключения на шрифт Lucida Console. Используя шрифт как DejaVu Sans Mono мог бы работать.
Хорошо, это - использование решения 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
будет.