2012-06-21 6 views
8

Ich verwende Ruby zu lesen und dann eine Datei zu stdout drucken, um die Ausgabe in eine Datei in Windows PowerShell umleiten.NUL-Byte zwischen jedem anderen Zeichen in der Ausgabe

Allerdings, wenn ich die Dateien überprüfen, erhalte ich diese für die Eingabe:

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> 

... doch ist diese für die Ausgabe:

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 > 

Wie kann das passieren?


bearbeiten: da mein Problem mit Ruby zu tun hat nichts, habe ich den Rubin-Code entfernt und enthalten meine Verwendung des Windows-Shell.

+2

Was ist Ihre Plattform? Das ['ÿ_'] (http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16) sieht sicher wie eine Stückliste für die UTF-16-Ausgabe aus. – sarnold

+0

Ich weiß nicht warum, aber Ihre Ausgabedatei scheint UTF-16-kodiert zu sein. – Stefan

+0

Danke! Ich hätte niemals die Bedeutung des 'ÿ_' erraten. Ich fürchte, es ist Windows-spezifisch und hat nichts mit Ruby zu tun. Die NUL-Bytes haben mich dazu gebracht, UTF-16 zu vermuten, und das Problem ist tatsächlich gelöst, wenn ich Ruby-Ausgabe in UTF-16 ... und Rubys Datei-out statt PowerShell-'>' -Operator verwende. – wen

Antwort

16

In PowerShell > ist effektiv das gleiche wie | Out-File und out-Datei standardmäßig auf Unicode-Codierung. Versuchen Sie dies anstelle von >:

... | Out-File outputfile -encoding ASCII 
+0

Danke, das erklärt ziemlich genau, warum plötzlich alles verrückt wurde, als ich zu PowerShell wechselte! ^^ – wen

+2

Gibt es eine Möglichkeit, dies global zu tun, anstatt '-encoding' für jeden Out-File-Aufruf zu spezifizieren? –

+0

Auch ich habe gerade bemerkt, Out-File -Append ist eher dieses Problem als nur Out-File zu verursachen. – Arluin

Verwandte Themen