2014-06-26 42 views
5

我試圖用機械化開發一個PERL程序,該程序將允許我在另一個網站上轉發我的網站上的內容。但是,我有一些問題編碼:使用Perl編碼換行符,引號和特殊字符機械化

  • 沒有換行中的其他網站時,我轉貼我的內容
  • 引號不解釋
  • 像€符號不被解釋太

我的網站使用UTF-8編碼,另一個網站使用ISO-8859-15編碼。 這裏是我的網站上的數據樣本,結果發佈在另一個網站上:

10 M€d'encours/10 M? ?d encours

這裏是我的Perl程序:

#!/usr/bin/perl 

use utf8; 
use strict; 
use warnings; 
use WWW::Mechanize; 
use HTML::TreeBuilder; 
use HTML::TreeBuilder::XPath; 

my $mech = WWW::Mechanize->new(
    stack_depth => 0, 
    timeout => 10, 
); 

$mech->get("RecoveredDataFromMyWebsiteUrl"); 
my $tree = HTML::TreeBuilder::XPath->new_from_content($mech->content); 
my $data = $tree->findvalue('/html/body//div[@id="content"]'); 
$data = Encode::encode("iso-8859-15",$data); 

$mech->get("OtherWebsiteFormularUrl"); 
$mech->form_name("formular")->accept_charset('iso-8859-15');# Form Post Emploi 
$mech->set_fields(
    content => $data 
); 
$mech->submit; 

open FIC,">output.html" 
or die "E/S : $!\n"; 
my $out = select(FIC5); 
print $mech->content; 
+0

也許這將有助於:http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl – Jeef

回答

1

我會改變你如何抓取網站,但也許試圖做到這一點試圖編碼時寫入文件時的幾件事UTF8:

my $out_file = 'output.html'; 
open (my $fh, ">:encoding(utf8)", $out_file) or die;