我目前正在编写一个小的 perl 脚本来抓取某些包含亚洲字符(简体中文和繁体中文)的页面。我面临的第一个问题是,当使用 Mechanize 时,我从“源”获取的字符串包含宽字符。源页面已经以 utf-8 编码。以下是我正在使用的选项和包:
use strict ;
use warnings ;
use utf8;
use Encode qw(decode encode);
use File::Path qw(make_path remove_tree);
binmode(STDOUT, ":utf8");
use Win32::Unicode::Dir;
我可以毫无问题地打印字符串。但是当我尝试创建一个目录时,mkdir 抱怨宽字符或无效参数。从那以后,我尝试了一种使用 mkdirW 的 Win32::Unicode 包的解决方法。该目录现在已成功创建,但在调用时我无法使用该目录:
$mech->get( $url, ':content_file' => $savePath) or die $!;
get 命令成功完成,但 $savepath 的目录为空。当涉及正常的字母数字字符时,此方法有效。
文件夹标题的示例是:蜂蜜 Honey So
my $savePath = "C:\\" . $title . "\\Picture_of_honey.jpg";
where $title = "蜂蜜 Honey";
我只是无法让它创建目录并保存文件。它必须是一个编码问题,但我试图编码为 utf 8,但由于它已经以 utf8 编码,所以原始文本会出现乱码。解码给了我一个宽字符错误。