首页 > 解决方案 > 使用 -File 时,PowerShell switch 语句使用什么编码?

问题描述

使用 -File 时,PowerShell switch 语句使用什么编码?它基本上是从文件中读取的,所以我希望对应用于读取的字节的编码进行一些控制?

我的意思不是 Get-Content 等,而是 switch 语句,例如:

switch -File ~\Desktop\demo.md -Regex
{
    '^$'
    {
        'Blank line'
    }

    '^#\s(.*)$'
    {
        'Heading'
    }

    '^-(.*)$'
    {
        'Bulleted list'
    }

    default
    {
        'Normal line'
    }
}

根据定义,将读取的字节转换为解释字符使用某种编码,对吗?

标签: powershell

解决方案


开关中的 -file 选项很少使用,但确实具有速度和内存使用优势。据我所知,确切的编码目前没有记录。

我们在 PowerShell in Action 第 3 版的第 171 页上使用的示例使用 Out-File 创建我们将在 switch 语句中使用的文件。Out-File 默认为 Unicode,因此我将假设 switch -file也使用 Unicode。

如果您需要控制编码,或者文件似乎无法正确读取,请恢复使用 Get-Content。

我再说一遍,我对 Unicode 的假设是基于 PowerShell 帮助系统信息而不是任何明确的知识。


推荐阅读