2012-06-19 31 views
2

我經常處理在窗口中編碼的具有\ r \ n回車符的UTF-16LE文件。使用下面的文件將文件轉換爲UTF-8沒有問題:是否可以在使用ruby讀取文件時指定換行符類型

File.new(filepath, 'r:utf-16le:utf-8') 

但是,這當然不會擺脫\ r。我目前擺脫他們的方法是用

str.gsub("\r", "") 

但是這將是很好的照顧它在讀取文件中的字符串#編碼有:cr_newline,:crlf_newline和:其將所有universal_newline選項換行到所需類型的換行符。在文件中閱讀時,有沒有辦法應用這些或類似的選項?

回答

1

的方法IO#獲取有一個可選的參數,可以讓你傳遞一個字符串來定義如何將線分開:

file = File.new(filepath, 'r:utf-16le:utf-8') 
while (line = file.gets("\r\n")) 
    ... 
end 
+0

感謝外星人,這正是我一直在尋找。如果有一種方法將它集成到文件對象的創建中,這將是很好的,但這種解決方案仍然可以節省我的gsub代碼。 –

+0

如果你真的想要,你可以繼承File並重寫方法獲取,但我認爲它不值得。 – alienhard

相關問題