如何在PowerShell中使用IO以UTF-8编码读取文本文件
PowerShell 指定UTF-8编码读取文本文件的实现
你当前使用的是.NET底层类的文件读取方法,只需要给ReadAllLines方法传入编码参数即可指定UTF-8读取,也可以直接用PowerShell原生cmdlet实现,两种方案如下:
方案1:修改现有.NET方法实现
直接在原有代码基础上增加第二个编码参数即可:
$text = [System.IO.File]::ReadAllLines("path.txt", [System.Text.Encoding]::UTF8) $text
方案2:使用PowerShell原生读取命令
用内置的Get-Content命令,通过-Encoding参数直接指定编码,写法更贴合PowerShell使用习惯:
$text = Get-Content -Path "path.txt" -Encoding UTF8 $text
版本兼容说明
- PowerShell 7及以上版本:上述两种写法都自动兼容带BOM、不带BOM的UTF-8文件,直接使用即可。
- Windows PowerShell 5.1及更早版本:上述写法默认仅支持读取带BOM的UTF-8文件,如果需要读取无BOM的UTF-8文件,需要显式声明无BOM的UTF8编码实例再传入:
$utf8NoBom = [System.Text.UTF8Encoding]::new($false) $text = [System.IO.File]::ReadAllLines("path.txt", $utf8NoBom)
内容的提问来源于stack exchange,提问作者Isaac
相关产品推荐
相关产品推荐

