我正在解析一个站点并使用Perl在csv文件中编写内容,我在csv的内容中看到†,“
垃圾值。
use utf8;
my $csv = Text::CSV->new ( { binary => 1, eol => "\n" } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
open my $fh, ">>:encoding(utf8)", "Test.csv" or die "Test.csv: $!";
$csv->print($fh, [$title,$content]);
$csv->eol();
该网站使用utf8进行编码。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
我该如何解决这个问题?
更新:
@ikegami:谢谢,您的代码输出与
具有相同的字符\x{201c}HexTab\x{201d}
更新2:
谢谢
如果我使用">>:encoding(cp1252)"
它解决了引号字符问题,但它会引发一些警告,
"\x{03bc}" does not map to cp1252 at c:/Perl/lib/IO/Handle.pm line 417
"\x{ff1c}" does not map to cp1252 at c:/Perl/lib/IO/Handle.pm line 417
答案 0 :(得分:3)
我认为你希望看到以下内容:
“HexTab”
你会看到以下内容:
“HexTab�
您将文件保存为UTF-8,但读取该文件的程序正在使用cp1252对其进行解码。这两个必须匹配!
两个选项:
:encoding(cp1252)
)对文本进行编码。:encoding(UTF-8)
)。一般来说,后者是更好的选择,因为它允许文件包含任何Unicode字符,而不是一个非常小的子集。
答案 1 :(得分:1)