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 に答える