2013-01-09 59 views
5

我正在使用Text::CSV模塊將行分析爲來自制表符分隔值文件的各個字段。在字符串特殊字符使用Perl解析帶特殊字符的字段Text :: CSV

例子是

"CEZARY Å?UKASZEWICZ, PAWEÅ? WIETESKA","BÜRO FÜR" 

我的代碼去如下:

my $file = $ARGV[0] or die "Need to get TSV file on the command line\n"; 

my $csv = Text::CSV->new({sep_char => "\t"}); 

open(my $data,'<', $file) or die "Could not open '$file' $!\n"; 


while (my $line= <$data>) { 

     if($csv->parse($line)){ 
      my @curr_arr = $csv->fields(); 

     } 
} # end of while 

close $data; 

以上是我的一些代碼的重要組成部分。我得到的錯誤是如下:

cvs_xs error : 2026 - EIQ - Binary Character inside quoted field, binary off @pos 15 
+6

重要提示:默認行爲是隻接受ASCII字符。這意味着字段不能包含換行符。如果您的數據包含字段中嵌入的換行符或字符數超過0x7e(代字號)或二進制數據的字符,您必須在調用new()時設置binary => 1。爲了覆蓋最廣泛的解析選項,您總是需要設置二進制。 – alex

回答

11
my $csv = Text::CSV->new({ binary => 1, sep_char => "\t"}); 
+0

對於這個答案,謝謝你! –