web-dev-qa-db-ja.com

デフォルトのPowerShellがUTF-16ではなくUTF-8を出力するようにするには?

デフォルトでは、WindowsのPowerShellはUTF-16を出力しているようです(たとえば、単純なecho hello > hi.txt、次にhi.txtはUTF-16になります)。代わりにecho hello | out-file -encoding utf8 hi.txtですが、リダイレクト演算子を使用するときのデフォルトにしたいだけです。これを達成する方法はありますか?

31

System.Management.Automationアセンブリ(別名「Microsoft Windows PowerShellエンジンコアアセンブリ」)で.NETデコンパイラーを使用すると、次のコードフラグメントが明らかになります。

// 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);
    ...

だから、私にはかなりハードコードされているように見えます。

参考までに、これは、PowerShell 2.0がインストールされたWindows 7 Enterprise x64システム上にありました。

22
Tinister

これがあなたの探していることを正確に実行するかどうかはわかりませんが、前述のように環境変数を設定してみてください here

$OutputEncoding = New-Object -typename System.Text.UTF8Encoding
3
OldWolf