当使用-File时,PowerShell开关语句使用什么编码?
当使用-File时,PowerShell开关语句使用什么编码?它基本上是从一个文件中读取,所以我希望对应用于读取字节的编码进行一些控制 我的意思不是获取内容等,而是切换语句,例如:当使用-File时,PowerShell开关语句使用什么编码?,powershell,Powershell,当使用-File时,PowerShell开关语句使用什么编码?它基本上是从一个文件中读取,所以我希望对应用于读取字节的编码进行一些控制 我的意思不是获取内容等,而是切换语句,例如: switch -File ~\Desktop\demo.md -Regex { '^$' { 'Blank line' } '^#\s(.*)$' { 'Heading' } '^-(.*)$' { '
switch -File ~\Desktop\demo.md -Regex
{
'^$'
{
'Blank line'
}
'^#\s(.*)$'
{
'Heading'
}
'^-(.*)$'
{
'Bulleted list'
}
default
{
'Normal line'
}
}
根据定义,将读取的字节转换为解释的字符会使用某种编码,对吗?交换机中的-file选项很少使用,但它确实提供了速度和内存使用优势。据我所知,确切的编码目前还没有记录在案 我们在PowerShell in Action第三版第171页上使用的示例使用Out文件创建我们将在switch语句中使用的文件。Out文件默认为Unicode,因此我将假设开关文件也使用Unicode 如果需要控制编码,或者文件似乎无法正确读取,请恢复使用Get Content
我再说一遍,我对Unicode的假设是基于PowerShell帮助系统信息,而不是任何明确的知识。您能更具体一点吗?哪个cmdlet?Get childItem使用
-File
,但不读取文件内容。获取内容读取这些文件并使用ASCII作为默认值。你是否看到与此相矛盾的行为?你能展示一些例子和你正在使用的ps版本吗?由于get content可以阅读多种格式,我建议它做一些自动计算。至少.net是这样。我猜他可能有一个文件格式不对。。。也许用基本字符开始文件,然后不在输入中包含该行可以解决这个问题,也许?像getcontentfile.txt{$\ne“text of first line”}
重新阅读您刚才非常感谢的响应。看起来你是对的,但我不太确定你的答案,因为正如你所写的,它是基于一个假设。我会继续寻找你是对的具体证据;-),如果我发现什么,我会在这里报告。