2010-09-30 60 views
2

我正在使用Text :: CSV解析一个csv文件。由于某些不良字符,并非所有行都能被解析。
Text :: CSV文档说: 如何在Perl中读取包含非ASCII字符的CSV文件?

CSV字段中的允许字符包括0x09(制表符)和包含范围0x20(空格)至0x7E(代字号)。
如何过滤尽可能容易的任何不允许的字符?

回答

9

而是筛选出“坏”的字符,你可能想使用binary标志告诉Text::CSV停止执行其ASCII唯一的规则:

my $csv = Text::CSV->new ({ binary => 1 }); 

如果你想读取文件这是非ASCII字符集(例如Latin-1或UTF-8),您应该查看Text::CSV::Encoded模块。

+0

+1。看,我认为这不可能是Perl的csv解析器的限制。 – 2010-09-30 06:15:55

+0

如果会在文档中提到它会很好。文档中提到了 – weismat 2010-09-30 08:02:16

+3

二进制文件。 – MkV 2010-09-30 08:23:46

0
$subject =~ s/[^\x09\x20-\x7E]+//g; 

将删除所有这些字符。

但是,这似乎是一个奇怪的限制什么是允许的CSV文件。我还没有看到一个csv解析器,但它无法处理,例如元音变音和其他非ASCII字符。不过,我不认识Perl。

相关问题