PowerShell脚本在CMD中输出法语特殊字符显示异常求助
PowerShell脚本UTF-8字符输出乱码排查方案
问题场景
执行以下PowerShell脚本:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 $name= "François Remetter" write-host $name
在CMD或PowerShell提示符中输出出现乱码:
D:\Codes\PSScripts>powershell exec.ps1 François Remetter
已尝试切换代码页至1252和65001,问题仍存在。
解决方法
确保脚本文件以UTF-8 BOM编码保存
Windows下PowerShell默认优先识别带BOM的UTF-8文件,若脚本是无BOM的UTF-8格式,会导致字符解析错误。用记事本打开脚本,选择「文件」→「另存为」,编码选「UTF-8」(带BOM),保存后重新执行。同时配置输入输出编码
仅设置Console::OutputEncoding不足以解决问题,需同步配置PowerShell的编码与控制台编码:
修改脚本为:# 配置控制台输入输出编码为UTF-8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::InputEncoding = [System.Text.Encoding]::UTF8 # 配置PowerShell自身的输出编码为UTF-8 $OutputEncoding = [System.Text.Encoding]::UTF8 $name= "François Remetter" Write-Host $nameCMD中执行前先配置编码与字体
在CMD中调用PowerShell前,先执行以下命令切换编码,同时将控制台字体改为「Lucida Console」或「Consolas」(部分字体不支持UTF-8字符):chcp 65001 powershell -ExecutionPolicy Bypass -File exec.ps1升级至PowerShell 7+版本
PowerShell 7(跨平台版)对UTF-8支持更完善,默认采用无BOM的UTF-8编码,无需额外配置即可正确显示UTF-8字符。
内容的提问来源于stack exchange,提问作者Sayandip Ghatak
相关产品推荐
相关产品推荐

