对于cmd:
- 临时修改:可以通过在命令行输入
chcp 65001
来临时将编码更改为UTF-812。 - 永久修改:需要修改注册表。按win+r,输入regedit运行,进入注册表,找到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
,新建一个名为autorun
的字符串值,并将其值设为chcp 65001
。这样每次启动cmd时都会自动更改编码为UTF-812。
对于PowerShell:
- 临时修改:直接在PowerShell中输入
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
可以临时更改当前会话的输出编码为UTF-834。 - 永久修改:可以通过修改PowerShell的profile文件来实现。首先,以管理员身份打开PowerShell,并运行
New-Item $PROFILE -ItemType File -Force
来创建或覆盖profile文件。然后,打开C盘,找到我的文档中的WindowsPowerShell文件夹,编辑这个ps1文件(默认是空的),加上以下代码$OutputEncoding=[console]::InputEncoding=[console]::OutputEncoding=New-Object System.Text.UTF8Encoding
34。之后,重新打开PowerShell,新的设置就会生效。
修改PowerShell可能会遇到不加载脚本的问题,开放权限可能会有安全问题
在PowerShell
-
输入以下命令之一来更改执行策略。这里有几个选项,每个选项的安全性级别不同:
Set-ExecutionPolicy RemoteSigned
:允许从本地计算机上运行所有脚本,但从Internet下载的脚本必须具有受信任的发布者签名。这是最常用的策略之一。Set-ExecutionPolicy Unrestricted
:允许所有脚本运行。这可能会降低安全性,因为它不验证脚本的来源或签名。Set-ExecutionPolicy AllSigned
:允许运行所有具有有效签名的脚本。这要求所有脚本都必须有签名。Set-ExecutionPolicy Bypass
:绕过执行策略检查,允许所有脚本运行。这是最不安全的选项,因为它完全绕过了执行策略。
例如,要设置为
RemoteSigned
,你可以输入:powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
-Scope CurrentUser
参数将更改应用于当前用户,而不是整个系统。如果你想更改整个系统的执行策略(需要更高的权限),可以使用-Scope LocalMachine
参数。 -
PowerShell会提示你确认更改。输入
Y
或A
(对于所有)以继续。 -
现在你可以尝试再次运行你的脚本或命令来修改PowerShell的编码设置。
-
(可选)如果你只是想临时绕过执行策略以运行脚本,你可以使用
-ExecutionPolicy Bypass
参数运行PowerShell,例如:powershell
powershell -ExecutionPolicy Bypass -File "your_script.ps1"
但请注意,这只是在单次运行PowerShell时绕过执行策略,而不会永久更改它。