你可以选择UTF-8 with BOM编码保存文件,这样可以让其自动识别编码
PowerShell执行以UTF-8编码保存的ps1文件时,显示中文乱码
症状
如图所示,hello_word.ps1文件中仅有以下代码:
在PowerShell中执行它时,显示为:
无效的尝试
我根据网上的教程,尝试了以下操作:
执行以下代码,将PowerShell输出字符集设置为UTF-8:
chcp 65001 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
看样子设置是有效的:
又执行了以下代码以启用Windows设置"Beta版:使用Unicode UTF-8提供全球语言支持":reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor” /v autorun /t REG_SZ /d "chcp 65001" /f然后我重启电脑,验证以上操作均无效。但我注意到执行以GBK编码保存的文件不会乱码,且在PowerShell命令行中直接执行Write-Host也不会乱码,求解
Windows 商业版 | 面向 IT 专业人士的 Windows 客户端 | 用户体验 | 远程桌面服务和终端服务
锁定的问题。 此问题已从 Microsoft 支持社区迁移。 你可投票决定它是否有用,但不能添加评论或回复,也不能关注问题。 为了保护隐私,对于已迁移的问题,用户个人资料是匿名的。
-
匿名
2024-10-13T07:11:39+00:00
-
匿名
2025-02-10T22:26:37+00:00 推测您正在使用的 PowerShell 版本为5.x,可以使用命令 $PSVersionTable.PSVersion 进行查看,旧版本在简体中文环境下似乎 UTF-8 编码的文件仍会以 GBK 方式读取,导致乱码。
https://github.com/PowerShell/PowerShell/releases 推荐在这里下载 7.x 版本使用,安装完成后在运行中使用 pwsh 启动(而不是 powershell )。
我也是最近遇到了这个问题,升级后可以正常运行 UTF-8 编码(不带 BOM )的 .ps1 脚本。