You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code中PowerShell的-like/-match运算符无法识别åäö字符问题咨询

解决VS Code中PowerShell匹配åäö字符失败的问题

这个问题我之前踩过一模一样的坑,核心原因就是文件编码不兼容!

问题根源

VS Code默认新建.ps1脚本时用的是**UTF-8(不带BOM)**编码,但Windows PowerShell(甚至部分场景下的PowerShell 7)读取脚本时,会把不带BOM的UTF-8文件里的特殊字符(比如å、ä、ö)解析成乱码。这就导致你脚本里写的"nötter"实际上被PowerShell当成了一串错误的字符,自然匹配不到原字符串里的正确内容;而在终端直接输入命令时,字符是通过系统编码正确传递的,所以能正常匹配成功。

解决方案

1. 修复现有脚本的编码

  • 打开你的.ps1脚本,看VS Code右下角状态栏的编码标识(通常显示UTF-8)
  • 点击这个编码标识,选择**"通过编码重新打开",然后在弹出的列表里选"UTF-8 with BOM"**
  • 保存脚本后重新运行,就能正常匹配了

2. 设置VS Code默认新建PowerShell脚本的编码

为了避免以后再踩这个坑,可以修改VS Code的默认设置:

  • 打开设置界面(快捷键Ctrl+,)
  • 在搜索框输入powershell.scriptEncoding
  • 将该选项的值设置为utf8bom
  • 之后新建的.ps1文件都会默认使用带BOM的UTF-8编码,和PowerShell完美兼容

验证示例

修改编码后,再运行你的脚本:

$String = "Denna sträng innehåller ordet nötter!"
If ($String -match "nötter") { 
    Write-host "True" 
} else { 
    Write-host "False" 
}

此时应该会输出True,和终端运行的结果完全一致。

内容的提问来源于stack exchange,提问作者BLKSTHL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:45:22