Perl CSV 读取不存在的字符
Perl CSV reading characters that aren't there
我正在使用 Perl 的 Text::CSV_XS
包读取文件,我正在 Ubuntu:
open my $fh, '<:encoding(utf8)', 'file.csv' or die "Can't read csv: $!"; # error shows on this line
while (my $row = $list->getline ($fh)) {
....
}
这看起来很好,直到一行出现错误:
UTF-8 "\xE9" does not map to Unicode at 0.xlsx_to_json.pl line 198, <$_[...]> line 14019.
在线查看,这表明这是一个 ê 字符或类似的东西,这很奇怪,因为我在第 14109 行没有看到任何这样的字符,该行看起来就像任何其他行。
我试过将空行改为
打开我的 $fh, '<', 'file.csv'
但这给出了同样的错误。
我尝试打开 CSV 文件并用不同的分隔符另存为 CSV,但在 Excel 2016 年我不能再这样做了,更改分隔符的选项根本就没有出现
我尝试在 LibreOffice 中打开以另存为 CSV,但更新删除了更改分隔符的功能
如何在没有这个奇怪错误的情况下读取此 CSV 文件?
您的文件不是有效的 UTF-8 文件。字节 E9 出现在不期望的位置。
后跟两个连续字节 = ok
$ perl -M5.010 -MEncode=decode -e'
decode("UTF-8", "\xE9\xBF\xBF", Encode::FB_WARN | Encode::LEAVE_SRC);
say "done";
'
done
后面没有两个连续字节 = 错误
$ perl -M5.010 -MEncode=decode -e'
decode("UTF-8", "\xE9\x41", Encode::FB_WARN | Encode::LEAVE_SRC);
say "done";
'
UTF-8 "\xE9" does not map to Unicode at -e line 2.
done
修复您的错误数据。
我正在使用 Perl 的 Text::CSV_XS
包读取文件,我正在 Ubuntu:
open my $fh, '<:encoding(utf8)', 'file.csv' or die "Can't read csv: $!"; # error shows on this line
while (my $row = $list->getline ($fh)) {
....
}
这看起来很好,直到一行出现错误:
UTF-8 "\xE9" does not map to Unicode at 0.xlsx_to_json.pl line 198, <$_[...]> line 14019.
在线查看,这表明这是一个 ê 字符或类似的东西,这很奇怪,因为我在第 14109 行没有看到任何这样的字符,该行看起来就像任何其他行。
我试过将空行改为
打开我的 $fh, '<', 'file.csv'
但这给出了同样的错误。
我尝试打开 CSV 文件并用不同的分隔符另存为 CSV,但在 Excel 2016 年我不能再这样做了,更改分隔符的选项根本就没有出现
我尝试在 LibreOffice 中打开以另存为 CSV,但更新删除了更改分隔符的功能
如何在没有这个奇怪错误的情况下读取此 CSV 文件?
您的文件不是有效的 UTF-8 文件。字节 E9 出现在不期望的位置。
后跟两个连续字节 = ok
$ perl -M5.010 -MEncode=decode -e'
decode("UTF-8", "\xE9\xBF\xBF", Encode::FB_WARN | Encode::LEAVE_SRC);
say "done";
'
done
后面没有两个连续字节 = 错误
$ perl -M5.010 -MEncode=decode -e'
decode("UTF-8", "\xE9\x41", Encode::FB_WARN | Encode::LEAVE_SRC);
say "done";
'
UTF-8 "\xE9" does not map to Unicode at -e line 2.
done
修复您的错误数据。