我正在尝试执行一个包含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运行脚本。