执行包含UTF-8(非英语)字符的脚本

时间:2018-12-28 04:02:57

标签: powershell encoding utf-8

我正在尝试执行一个包含UTF-8字符的简单PS1脚本。编码设置如下:

[System.Console]::InputEncoding = [System.Console]::OutputEncoding = `
$OutputEncoding = [System.Text.Encoding]::UTF8

myscript.ps1 的内容:

"бг стринг"

这里是 myscript.ps1 的所有字节:

  

34 ,208,177,208,179, 32 ,209,129,209,130​​,209,128,208,184,208,189,208,179, 34

您看到分别为UTF-8设置了2个字节,但调用PS1文件始终使用默认编码。

PS C:>。\ myscript.ps1

预期输出:

  

бгстринг

实际结果:

  

бгстринг

解决方法:

& ([scriptblock]::create((gc C:\myscript.ps1 -Encoding UTF8 | Out-String)))

这是一个可怕的解决方法,传递参数或开关是一场噩梦。

我需要一个解决方案,如何不以默认编码而是以UTF-8运行脚本。

0 个答案:

没有答案