shell中encoding=utf-8_编码 - 使用PowerShell以UTF-8编写没有BOM的文件

注意:此答案适用于Windows PowerShell; 相比之下,在跨平台的PowerShell核心版中,没有BOM的UTF-8是默认编码。

为了补充M. Dudley自己简单实用的答案(以及ForNeVeR更简洁的重新制定):

为方便起见,这里有高级功能Out-FileUtf8NoBom,这是一个基于管道的替代方案,模仿Out-FileUtf8NoBom,这意味着:

您可以像管道中的Out-FileUtf8NoBom一样使用它。

非字符串的输入对象的格式与将它们发送到控制台时的格式相同,就像Out-FileUtf8NoBom一样。

例:

(Get-Content $MyPath) | Out-FileUtf8NoBom $MyPath

请注意Out-FileUtf8NoBom如何包含在(...)中,它确保在通过管道发送结果之前打开,读取并关闭整个文件。 这是必要的,以便能够回写到同一个文件(在适当的位置更新)。

但是,一般情况下,这种技术不建议有两个原因:(a)整个文件必须适合内存;(b)如果命令中断,数据将丢失。

关于内存使用的说明:

M. Dudley自己的回答要求首先在内存中构建整个文件内容,这对于大文件来说可能会有问题。

下面的函数仅稍微改进了这一点:所有输入对象仍然首先被缓冲,但是它们的字符串表示然后被生成并逐个写入输出文件。

源代码Out-FileUtf8NoBom(也可作为麻省理工学院授权的Gist提供):

.SYNOPSIS

Outputs to a UTF-8-encoded file *without a BO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值