私は現在、アジア文字 (簡体字と繁体字の両方の中国語) が含まれる特定のページをスクレイピングするための小さな 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 でエンコードされているため、元のテキストが文字化けします。デコードすると、ワイド文字エラーが発生します。