输出中每个其他字符之间的NUL字节

wen*_*wen 11 powershell encoding

我正在使用Ruby来读取然后将文件打印到stdout,将输出重定向到Windows PowerShell中的文件.

但是,当我检查文件时,我得到了输入:

PS D:> head -n 1 .\inputfile
<text id="http://observer.guardian.co.uk/osm/story/0,,1009777,00.html">         <s>             Hooligans       NNS     hooligan
                ,       ,       ,               unbridled       JJ      unbridled               passion NN      passion
-       :       -               and     CC      and             no      DT      no              executive       JJ      executiv
e               boxes   NNS     box             .       SENT    .               </s>
Run Code Online (Sandbox Code Playgroud)

......但这对于输出:

PS D:> head -n 1 .\outputfile
ÿ_< t e x t   i d = " h t t p : / / o b s e r v e r . g u a r d i a n . c o . u k / o s m / s t o r y / 0 , , 1 0 0 9 7 7 7 , 0
0 . h t m l " >                  < s >           H o o l i g a n s       N N S   h o o l i g a n                 ,       ,
 ,               u n b r i d l e d       J J     u n b r i d l e d               p a s s i o n   N N     p a s s i o n
 -       :       -               a n d   C C     a n d           n o     D T     n o             e x e c u t i v e       J J
 e x e c u t i v e               b o x e s       N N S   b o x           .       S E N T         .               < / s >
Run Code Online (Sandbox Code Playgroud)

怎么会发生这种情况?


编辑:由于我的问题与Ruby没有任何关系,我已经删除了Ruby代码,并包含了我对Windows shell的使用.

Kei*_*ill 23

在PowerShell >中,| Out-File与Out-File默认为Unicode编码实际上相同.试试这个而不是使用>:

... | Out-File outputfile -encoding ASCII
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这几乎可以解释为什么当我切换到PowerShell时,一切突然变得疯狂!^^ (2认同)
  • 有没有办法在全局范围内执行此操作,而不是为每个`Out-File`调用指定`-encoding`? (2认同)