在VSCode中的Powershell终端编码

4

我正在使用VSCode编辑器编写PowerShell脚本。但是,我遇到了包含西里尔字母字符的路径问题。例如,以下代码:

$users = 'C:\Users\Тестовый пользователь\Documents\userlist.csv'
foreach ($user in $users) {
    $u = Get-Content -LiteralPath $users
    Write-Host "Пользователь:" $u
}

返回错误:

无法找到路径'C:\Users\Ниармедк\Documents\userlist.csv',因为它不存在。

(说明:该路径中的字符可能是由于编码问题而出现了乱码)

首先,不要使用VSCode终端,它很糟糕。其次,请选择俄语作为非Unicode系统区域设置:https://java.com/en/download/help/locale.xml - 4c74356b41
1
问题解决了!我只需将文件重新保存为UTF8 BOM。 - Evgeny Trifonov
无论是哪个 vscode 终端都不好用?有什么替代品吗? - Evgeny Trifonov
@4c74356b41 你可以将PowerShell设置为你的VSCode终端 ;) - gvee
请@gvee提供链接。 - 4c74356b41
显示剩余5条评论
1个回答

3
如果您没有使用BOM指定编码,Powershell将使用其默认编码(大多数情况下为ASCII)读取文件:了解默认编码并在PowerShell中更改
VS Code在其默认配置中不设置bom。为避免在进一步的PowerShell脚本中出现此问题,请在您的VS Code设置中添加这些选项
{
    "[powershell]": {
        "files.encoding": "utf8bom",
        "files.autoGuessEncoding": true
     },
}

或者您也可以更改您的PowerShell默认编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接