默认情况下,当您将命令的输出重定向到文件或将其传递到PowerShell中的其他内容时,编码为UTF-16,这是无用的.我想把它改成UTF-8.
它可以通过替换>foo.txt语法来逐个进行,| out-file foo.txt -encoding utf8但是每次都必须重复这是很尴尬的.
在PowerShell中设置内容的持久方法是将它们放入\Users\me\Documents\WindowsPowerShell\profile.ps1; 我已经验证这个文件确实是在启动时执行的.
有人说输出编码可以设置,$PSDefaultParameterValues = @{'Out-File:Encoding' = 'utf8'}但我已经尝试过,它没有任何效果.
https://blogs.msdn.microsoft.com/powershell/2006/12/11/outputencoding-to-the-rescue/谈到$OutputEncoding乍一看似乎应该是相关的,但后来谈到输出被编码在ASCII中,这不是实际发生的事情.
如何设置PowerShell使用UTF-8?
我想在 Windows 自托管运行器上访问之前作业的步骤结果。为了做到这一点,我使用如下输出变量,效果很好(在最后一步中打印“成功”)。
name: Debug workflow
on: workflow_dispatch
jobs:
job1:
runs-on: tester-1
outputs:
output1: ${{ steps.step1.outputs.MY_OUTPUT }}
steps:
- name: Checkout with submodules
id: checkout_step
uses: actions/checkout@v3
- name: Write variable to output
id: step1
run: echo '::set-output name=MY_OUTPUT::${{ steps.checkout_step.outcome }}'
job2:
runs-on: tester-1
needs: job1
env:
OUTPUT1: '${{needs.job1.outputs.output1}}'
steps:
- name: Print outputs from previous
run: echo ${{ env.OUTPUT1 }}
Run Code Online (Sandbox Code Playgroud)
然而::set-output 已被弃用,所以我想转换为正确的方法。根据另一个问题,我已经尝试将我的替换echo '::set-output name=MY_OUTPUT::${{ steps.checkout_step.outcome }}'为
echo "MY_OUTPUT=${{ steps.checkout_step.outcome }}" >> $env:GITHUB_ENVecho …