2012-02-19 84 views
0

我必須在perl中解析文件。該文件是UTF 16文件格式,但我需要UTF 8格式的文件。我已經轉換文件並將其存儲在一個新文件中,但是我遇到了新行字符的問題。Perl中的文件格式問題

在原始文件中,每個新行都被表示爲0d 00 0a 00(回車和換行),但是在轉換的文件中,我只看到0d而不是0d 0a。這個問題是,當我下次嘗試讀取文件時,它將整個文件讀取爲1行。 要轉換文件,我所做的只是讀取UTF 16格式的文件並將其寫入UTF 8中。請問我可以如何在末尾添加0a

+2

你已經描述了結果,但是你沒有顯示你的代碼。請顯示你的代碼。 – 2012-02-19 06:49:07

+2

你可能是'chomp'你的輸入(因此刪除LF並只留下CR)? – cjm 2012-02-19 07:45:40

+1

只需使用'iconv'轉換你的文件。包含在同一發行版中的 – n0rd 2012-02-19 08:07:05

回答

0

既然你還沒有顯示任何代碼(我建議你這樣做,爲更多相關的建議),我會盲目地推薦這個:Encode::Unicode

+0

[piconv](http://p3rl.org/piconv)是用於編碼轉換的適當命令行工具。 – daxim 2012-02-19 12:52:07

1

感謝您的回答。我設法通過打印一個新行來添加一個新行字符。我使用的代碼是

open IN, '<:raw:encoding(UTF-16LE)', $input; 
open (OUT,"> $sOutFile"); 
my $count = 0; 
while (defined ($sLine = <IN>)) 
{ 
    if ($count == 0) // Delete first line as not needed 
    { 
     $count = 1; 
     next; 
    } 
chomp $sLine; 
print OUT $sLine."\x0A"; // To get new line 
} 

我知道這不是最好的方法(即使是刪除第一行),但它的工作。

對於遲到的回覆,我表示歉意。