1

我需要使用 shift_jis 编码处理文件。但是,行终止符的格式我不熟悉。

> 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。

终止这些类型的文件的正确方法是什么?

4

2 回答 2

1

为什么不$_ =~ s/\r//手动做?

编辑:显然,你也可以这样做

require Encode;
use Unicode::Normalize;

s/\x{0085}//g;

删除NEL: Next Line, U+0085字符。

于 2009-12-29T07:07:00.720 回答
0

您需要考虑谁在使用数据,并更多地了解生成这些文件的环境。如果它最终是一个普通的 CSV 输出文件,使用任何你喜欢的旧字符串操作来摆脱它们(并产生 CRLF 终止符),你会没事的。

于 2009-12-29T22:46:42.527 回答