2012-06-21 40 views
8

Tôi đang sử dụng Ruby để đọc và sau đó in tệp thành giá trị cao, chuyển hướng đầu ra tới tệp trong Windows PowerShell.NUL-byte giữa mỗi ký tự khác trong đầu ra

Tuy nhiên, khi tôi kiểm tra các tập tin, tôi có được điều này cho đầu vào:

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> 

... nhưng điều này cho kết quả:

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 > 

Làm thế nào có thể điều này xảy ra?


Sửa: kể từ khi vấn đề của tôi không có bất cứ điều gì để làm với Ruby, tôi đã gỡ bỏ Ruby-mã, và bao gồm việc sử dụng của tôi về cấu trúc hệ thống.

+2

Nền tảng của bạn là gì? ['Ÿ_'] (http://en.wikipedia.org/wiki/Byte_order_mark#UTF-16) chắc chắn trông giống như một BOM cho đầu ra UTF-16. – sarnold

+0

Không biết tại sao nhưng tệp đầu ra của bạn dường như được mã hoá UTF-16. – Stefan

+0

Cảm ơn! Tôi chưa bao giờ đoán được ý nghĩa của 'ÿ_'. Tôi sợ nó đặc trưng cho Windows và không liên quan gì đến Ruby. Các NUL-byte khiến tôi nghi ngờ UTF-16, và vấn đề thực sự được giải quyết khi tôi có đầu ra của Ruby trong UTF-16 ... và sử dụng tệp tin của Ruby thay vì toán tử '>' của PowerShell. – wen

Trả lời

16

Trong PowerShell > có hiệu quả giống như | Out-File và mặc định Out-File thành mã hóa Unicode. Hãy thử thay vì sử dụng >:

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

Cảm ơn bạn, điều này khá nhiều lý giải tại sao mọi thứ đột nhiên trở nên điên rồ khi tôi chuyển sang PowerShell! ^^ – wen

+2

Có cách nào để thực hiện điều này trên toàn cầu thay vì chỉ định '-encoding' cho mọi lệnh gọi' Out-File' không? –

+0

Ngoài ra tôi chỉ nhận thấy Out-File -Append có nhiều khả năng gây ra vấn đề này hơn là đồng bằng Out-File. – Arluin

Các vấn đề liên quan