2013-01-09 57 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

对于这个答案,谢谢你! –