无 BOM 的 UTF8 编码 - PowerShell

jav*_*azo 5 powershell encoding cmd byte-order-mark utf-8

我有一个 bat 文件,我在其中对一些 CSV 文件进行编码。问题是,一旦编码完成,文件的开头就会有一个字符(我猜是 BOM 字节)。这个字符让我很困扰,因为编码后,我使用这个文件来生成数据库。这是编码行(在bat文件内):

powershell -Command "&{ param($Path); (Get-Content $Path) | Out-File $Path -Encoding UTF8 }" CSVs\\pass.csv
Run Code Online (Sandbox Code Playgroud)

有没有办法对没有 BOM 的文件进行编码(如果这是问题)?

谢谢!

jav*_*azo 5

我找到了解决方案。只需将行更改为:

powershell -Command "&{ param($Path); $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False); $MyFile = Get-Content $Path; [System.IO.File]::WriteAllLines($Path, $MyFile, $Utf8NoBomEncoding) }" CSVs\\pass.csv
Run Code Online (Sandbox Code Playgroud)

  • 你能解释一下语法吗? (2认同)