为什么附加到文件插入空格(NUL)

时间:2016-01-29 15:35:53

标签: powershell

我正在运行此命令

Get-Content generated\no_animate.css >> generated\all.css

我想将no_animate.css的内容附加到all.css

如果我从cmd提示符这样运行它,这是有效的:

powershell Get-Content generated\no_animate.css >> generated\all.css

如果我将完全相同的代码放入.ps1文件并运行它正在复制内容,但在每个字符之间插入空格(在texteditor中表示为NUL)。

为什么要这样做?我该如何预防?

1 个答案:

答案 0 :(得分:2)

在PowerShell中,redirection operators >>>分别是Out-FileOut-File -Append的缩写。 Out-File使用Unicode(特别是小端UTF-16)作为其默认编码。使用此编码,每个字符由2个字节而不是1个字节表示。对于ASCII字符(basic latin块中的字符),第一个字节的值为0.

从CMD运行powershell Get-Content generated\no_animate.css >> generated\all.css使用CMD redirection operator而不是PowerShell,而不会将文本转换为Unicode。

如果您想使用PowerShell并且输入文件是ascii编码,请使用Add-Content(在PowerShell v3或更新版本中提供):

Get-Content generated\no_animate.css | Add-Content generated\all.css
带有明确编码的

Out-File

Get-Content generated\no_animate.css |
    Out-File generated\all.css -Append -Encoding Ascii