我需要处理一个使用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。
终止这些类型的文件的正确方式是什么?
发布于 2009-12-29 15:07:01
为什么不手动执行$_ =~ s/\r//?
编辑:显然,你也可以这样做
require Encode;
use Unicode::Normalize;
s/\x{0085}//g;删除NEL: Next Line, U+0085字符。
发布于 2009-12-30 06:46:43
您需要考虑谁在使用这些数据,并更多地了解生成这些文件的环境。如果您最终想要的是一个普通的CSV输出文件,那么可以使用任何您喜欢的旧字符串操作来摆脱它们(并生成CRLF终止符),这样就没问题了。
https://stackoverflow.com/questions/1973012
复制相似问题