PowerShell脚本中含UTF-8特殊字符目录的Test-Path命令失效问题
解决PowerShell脚本中UTF-8特殊字符路径检测失败的问题
方案1:修正脚本文件编码为UTF-8带BOM
PowerShell默认对无BOM的UTF-8脚本文件解析可能出现特殊字符乱码,导致路径不匹配。操作步骤:
- 用记事本打开你的
script.ps1 - 点击「文件」→「另存为」,在编码下拉框选择「UTF-8带BOM」(部分编辑器显示为「UTF-8 with BOM」)
- 覆盖保存后重新运行脚本
方案2:用Unicode码点/转义序列硬编码路径
如果不想修改脚本编码,可以直接在脚本中用Unicode表示特殊字符:
方式A:用[char]拼接
$targetPath = "G:\Drive partag" + [char]0x00E9 + "s" Test-Path -LiteralPath $targetPath
方式B:用PowerShell Unicode转义语法
Test-Path -LiteralPath "G:\Drive partag`u{00E9}s"
(注:é的Unicode码点是U+00E9,其他特殊字符可自行查询对应码点)
方案3:确保路径读取时的编码一致性
如果路径不是硬编码在脚本中,而是从外部文件/命令输出获取,读取时需指定UTF-8编码:
比如从文本文件读路径:
$pathFromFile = Get-Content -Path "path_list.txt" -Encoding UTF8 Test-Path -LiteralPath $pathFromFile
原因说明:直接在PowerShell控制台执行时,控制台编码(通常为UTF-8或系统默认代码页)能正确解析输入的特殊字符;但脚本文件编码错误时,PowerShell读取脚本会将特殊字符解析为乱码,导致Test-Path检测的路径与实际目录不匹配。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

