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
相关产品推荐
相关产品推荐

