2012-06-21 11 views
8

Rubyを使用してファイルを読み込んでからstdoutに出力し、出力をWindows PowerShellのファイルにリダイレクトしています。出力の1文字おきにヌルバイド

私はファイルを検査する場合しかし、私は入力のためにこれを取得する:

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> 

...まだ出力のために、この:

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 > 

どのようにこれが起こることができますか?


編集:私の問題は、ルビーを行うには何も持っていなかったので、私はRubyのコードを削除し、Windowsシェルの私の使用を含めました。

+2

お使いのプラットフォームは何ですか?それはUTF-16出力用のBOMのように見えます(http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16)。 – sarnold

+0

理由はわかりませんが、出力ファイルはUTF-16でエンコードされているようです。 – Stefan

+0

ありがとう!私は「ÿ_」の意味を推測したことはなかった。私はそれがWindows特有であることを恐れ、Rubyとは何の関係もありません。 NULバイトは私にUTF-16を疑わせるもので、Rubyの出力をUTF-16にしても問題は解決しました...そして、PowerShellの '> '演算子の代わりにRubyのファイルアウトを使用します。 – wen

答えて

16

PowerShellでは>は実質的に| Out-Fileと同じであり、Out-FileはUnicodeエンコードにデフォルト設定されています。代わりに>を使用してください:

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

ありがとう、これは、私がPowerShellに切り替えたときに突然すべてが狂った理由を説明するものです! ^^ – wen

+2

'Out-File'呼び出しごとに' -encoding'を指定するのではなく、これをグローバルに行う方法はありますか? –

+0

また、Out-File-Appendが、単純なOut-Fileよりもこの問題を引き起こす可能性が高いことに気付きました。 – Arluin

関連する問題