Измените Unicode на UTF-8 | Сценарий PowerShell

#powershell #unicode #utf-8

#powershell #юникод #utf-8

Вопрос:

Когда я использую Write-Host в своем сценарии PowerShell, результат выглядит следующим образом: ????? ?????.

Это происходит потому, что я ввожу строки на арабском языке с Write-Host помощью, и кажется, что PowerShell не поддерживает арабский язык…

Как мне напечатать текст, используя Write-Host , но в юникоде UTF-8 (который поддерживает арабский язык).

Пример: Write-Host "مرحباً بالعالم" Вывод в этом случае будет: ????? ?????

Какие-либо решения?

Комментарии:

1. Write-Host конечно, поддерживает unicode, какую кодировку файла имеет сам ваш скрипт?

2. Я предполагаю, что это происходит в Windows Powershell, а не в Core, верно?

3. Он отлично работает в ise. Консоль просто не может его отобразить.

Ответ №1:

Исправлено

Вам нужно установить шрифт, который поддерживает эти символы. Как Cascadia Code PL

Примечание: версия, отличная от PL, не работала, поэтому получите версию PL.

Возможно, вам также придется установить кодировку консоли. Если вам действительно не нужна другая кодировка, по умолчанию utf8 это хорошая идея.

 $OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
 

введите описание изображения здесь

Перед

введите описание изображения здесь

На самом деле мне это не нужно wt , я бы посоветовал. windowsterminal — это современный термин, который теперь является inbox приложением. Это означает, что в дальнейшем он будет использоваться по умолчанию в Windows.

введите описание изображения здесь

utf8 Это не работает с термином, который wt поддерживает (оба используют cascadia code pl шрифт