首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PowerShell在无BOM的UTF8中写入文件

使用PowerShell在无BOM的UTF8中写入文件
EN

Stack Overflow用户
提问于 2011-04-08 23:02:39
回答 11查看 315K关注 0票数 305

在使用UTF-8时,Out-File似乎会强制执行物料清单:

代码语言:javascript
复制
$MyFile = Get-Content $MyPath
$MyFile | Out-File -Encoding "UTF8" $MyPath

如何使用PowerShell在没有BOM的情况下以UTF-8格式编写文件?

更新2021

自从我10年前写了这个问题以来,PowerShell发生了一些变化。检查下面的多个答案,他们有很多好的信息!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-04-08 23:02:54

使用.NET的UTF8Encoding类并将$False传递给构造函数似乎是可行的:

代码语言:javascript
复制
$MyRawString = Get-Content -Raw $MyPath
$Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
[System.IO.File]::WriteAllLines($MyPath, $MyRawString, $Utf8NoBomEncoding)
票数 258
EN

Stack Overflow用户

发布于 2016-12-02 08:26:55

我认为这不是UTF,但我只是找到了一个非常简单的解决方案,似乎是有效的…

代码语言:javascript
复制
Get-Content path/to/file.ext | out-file -encoding ASCII targetFile.ext

对我来说,这导致了一个没有bom文件的utf-8文件,而不管是什么源格式。

票数 63
EN

Stack Overflow用户

发布于 2018-04-24 01:48:31

当使用Set-Content而不是Out-File时,您可以指定编码Byte,它可用于将字节数组写入文件。这与不发出物料清单的自定义UTF8编码相结合,提供了所需的结果:

代码语言:javascript
复制
# This variable can be reused
$utf8 = New-Object System.Text.UTF8Encoding $false

$MyFile = Get-Content $MyPath -Raw
Set-Content -Value $utf8.GetBytes($MyFile) -Encoding Byte -Path $MyPath

与使用[IO.File]::WriteAllLines()或类似的不同之处在于,它应该可以很好地处理任何类型的项目和路径,而不仅仅是实际的文件路径。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5596982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档