Печать символов Юникода в командной строке PowerShell - PullRequest
25 голосов
/ 27 апреля 2011

Я пытаюсь настроить Mercurial для распечатки состояния репозитория, в котором я сейчас нахожусь с PowerShell.Пока у меня все работает, но я хотел бы иметь возможность печатать '' 'в приглашении, когда я нахожусь в хранилище.К сожалению, кажется, что PowerShell имеет некоторые проблемы с печатью символов Юникода.

В принятом ответе для Существует ли командная оболочка Windows, которая будет отображать символы Юникода? этоПредполагается, что PowerShell v2, поставляемая с Windows 7 (которую я использую), сможет печатать символы Юникода, но я не могу заставить его работать.Аналогично, следующий ответ об использовании chcp 65001 также не работает.

Это все еще недостаток в PowerShell или я упускаю что-то очевидное?

Ответы [ 5 ]

24 голосов
/ 27 апреля 2011

Это не недостаток PowerShell. Это недостаток консольной подсистемы Windows, которую использует PowerShell.exe. Консольная подсистема не поддерживает Unicode, но кодовые страницы, которые датируются днями DOS. Исправление PowerShell V2 предоставляется через интегрированную среду сценариев PowerShell или PowerShell_ISE.exe. Это графическое приложение на основе WPF, которое может легко обрабатывать символы Юникода.

Теоретически вы можете изменить кодовую страницу, используя chcp или

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(850)

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

7 голосов
/ 28 апреля 2011

Печатает здесь полунатура.У Консоласа нет символа для этого символа, поэтому все, что я вижу в окне консоли, это символ замены.Но PowerShell принимает и печатает его очень хорошо, как вы можете видеть, когда копируете его.

Теперь, если вы установили окно консоли на растровые шрифты, тогда история немного другая, но, к счастью, PowerShell имеетнормальные значения по умолчанию.

6 голосов
/ 27 апреля 2011

Вы не можете использовать консоль PowerShell по умолчанию (т.е. окна).Однако, если вы используете PowerShell ISE (который имеет собственную консоль), он будет работать.Я не уверен, что это будет соответствовать вашим потребностям.

2 голосов
/ 04 августа 2015

Deja Vu Sans Mono работает в cmd и имеет этот символ, поэтому он работает и в PowerShell.

Enter image description here

Enter image description here

Кстати, я предлагаю также установить Droid Sans Mono и Courier New в командную строку.Затем они также будут доступны в PowerShell.Существует не так много моно-шрифтов, которые поддерживает cmd.Но это три, Дежа Санс Моно, Дроид Санс Моно и Курьер Нью.

1 голос
/ 07 мая 2011

Вам нужно

  1. установите monospace font в вашей системе, который содержит ваш глиф (возможно, используйте карту символов, чтобы найти подходящий, и т. Д.) а затем
  2. установить его в качестве шрифта консоли, как описано здесь: http://www.watchingthenet.com/how-to-add-and-change-fonts-in-windows-command-prompt.html
...