我需要使用shift_jis編碼處理文件。然而,行終止符是一種我不熟悉的格式。如何使用CRLF,NEL行結束符處理行?
> file record.CSV
record.CSV: Non-ISO extended-ASCII text, with CRLF, NEL line terminators
進出口使用一般:
open my $CSV_FILE, "<:encoding(shift_jis)", $filename or die "Could not open: $CSV_FILE : $!";
while (<$CSV_FILE>) {
chomp;
# do stuff
}
然而它仍然留在每個記錄的末端的CR。
什麼是終止這些類型的文件的正確方法?
好奇:這是否意味着文件中的每個記錄都以CR LF NEL結束?或者是一些記錄CR LF和其他NEL? – ZoogieZork 2009-12-29 05:21:39
你確定*有NEL字符嗎? Shift JIS(或ASCII)中不存在該字符。位置0x15處的字符是NAK。 – 2009-12-29 08:06:32
我非常肯定你*不*具有NEL字符,因爲0x85是(在Shift-JIS中)多字節字符序列的一部分。例如。我在這裏得到的一組Shift-JIS文件經常包含這個序列:「\ x8c \ x85」,它實際上代表了這個Kanji:桁。所以你可能只想刪除CR。你可以用一個正則表達式輕鬆完成。 – Giel 2014-02-10 12:39:19