현재 아시아 문자 (중국어 간체 및 번체 모두)가있는 특정 페이지를 긁기위한 작은 perl 스크립트를 작성하고 있습니다. 내가 직면 한 첫 번째 문제는 Mechanize를 사용할 때 '원본'에서 가져온 문자열에 넓은 문자가 포함되어 있다는 것입니다. 소스 페이지는 이미 utf-8로 인코딩되어 있습니다. 사용중인 옵션 및 패키지는 다음과 같습니다.Perl 와이드 문자 (Mechanize get/mkdir fails)
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의 디렉토리가 비어 있습니다. 이 방법은 정상적인 영숫자 문자가있을 때 작동합니다. 폴더 제목의
예는 다음과 같습니다 꿀 蜂蜜 그래서
my $savePath = "C:\\" . $title . "\\Picture_of_honey.jpg";
where $title = "蜂蜜 Honey";
난 그냥 디렉토리를 만들고 파일을 저장 얻을 수 없습니다. 그것은 인코딩 문제가되어야하지만, 나는 UTF 8로 인코딩하려했으나 utf8로 이미 인코딩 된 이후로 원래 텍스트를 왜곡합니다. 디코딩하면 넓은 문자 오류가 발생합니다.
웹 사이트 문자를 안전하게 Windows 안전 문자로 변환하는 방법은 무엇입니까? 그래서 당신은 내가 모든 외국 텍스트를 파싱하고 그걸로 디렉토리를 만드는 대신 파일에 저장해야한다고 말하고 있습니다. 이 성가신 문제를 해결하는 방법에 대해 자세히 설명해 주시겠습니까? 나는 지금 보안에 대해 정말로 염려하지 않는다. – Jay