По умолчанию PowerShell выдает UTF-8 вместо UTF-16?

По умолчанию PowerShell в Windows выводит UTF-16 (например, если я делаю простой echo hello > hi.txt , то hi.txt заканчивается в UTF-16). Я знаю, что могу принудить это к моей искомой кодировке текста, вместо этого выполняя echo hello | out-file -encoding utf8 hi.txt echo hello | out-file -encoding utf8 hi.txt , но я бы хотел, чтобы это было по умолчанию, когда я использую оператор перенаправления. Есть ли способ достичь этого?

  • Удалить все файлы из папки и ее подпапок
  • Конфигурирование истории файлов Windows 8 / 8.1 / 10 с помощью командной строки
  • Потерянное подключение к хосту Hyper V после создания внешнего коммутатора
  • Как переименовать некоторые файлы в соответствии с их меткой времени
  • Как я могу запускать команды в PowerShell с разрешениями администратора?
  • Несколько каталогов: эквивалент Powershell "mkdir dir {1..9}"?
  • 2 Solutions collect form web for “По умолчанию PowerShell выдает UTF-8 вместо UTF-16?”

    Использование декомпилятора .NET на сборке System.Management.Automation (например, «Microsoft Core PowerShell Engine Core Assembly») показывает этот фрагмент кода:

     // class: System.Management.Automation.RedirectionNode private PipelineProcessor BuildRedirectionPipeline(string path, ExecutionContext context) { CommandProcessorBase commandProcessorBase = context.CreateCommand("out-file"); commandProcessorBase.AddParameter("-encoding", "unicode"); if (this.Appending) { commandProcessorBase.AddParameter("-append", true); } commandProcessorBase.AddParameter("-filepath", path); ... 

    Поэтому для меня это выглядит довольно жестко.

    FYI, это было в Windows 7 Enterprise x64 с установленной PowerShell 2.0.

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

     $OutputEncoding = New-Object -typename System.Text.UTF8Encoding 
    Давайте будем гением компьютера.