5

В Windows 10 в cmd.exe , если я делаю

tree
C:.
├───a
│   ├───b
│   └───etc...

на консоли четко отображаются строки и штрихи Unicode.

Но если я перенаправлю этот вывод в файл

tree > tree.txt

содержимое файла:

C:.
³ÄÄÄa
³   ÃÄÄÄb
³   ÀÄÄÄetc...

Не удается правильно написать символы Юникода.

Он не может даже прочитать то, что написал:

tree > tree.txt
type tree.txt
C:.
����a
�   ����b
�   ����etc...

(может отображаться как «�» здесь (вопросительные знаки в наклонном квадрате), но в консоли они отображаются как пустые поля)

Я уже попробовал эти предложения без удачи:

Попробуйте chcp 1252 или chcp 65001 из командной строки. С Lucida Console или другой поддержкой шрифтов.

CMD /U /c tree > tree.txt

Я использовал эту команду неправильно, теперь исправлена, но я все равно получаю тот же результат, что и просто tree - оно отлично отображается в консоли, но вывод файла - все еще те странные символы.

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

1 ответ1

2

Кодировка, которая обычно используется для символов рисования блоков, - 850, но даже это не помогает в моей системе Windows 8.1. Я нашел только один способ избежать плохой обработки cmd текстовых кодировок: использовать программу, которая хорошо обрабатывает кодирование, а именно PowerShell.

Это перенаправление > которое разрушает символы, поэтому мы просто высосем вывод tree и заклиним его в файл без простого перенаправления cmd :

Invoke-Expression "tree" | Out-File "tree.txt"

Или короче:

iex "tree" > "tree.txt"

Чтобы создать экземпляр PowerShell, который запускает эту команду и затем завершает работу, используйте это в командной строке или командном файле:

powershell -command "iex \"tree\" > \"tree.txt\""

Полученный файл можно успешно просмотреть в блокноте или обычным type .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .