2014-06-26 16 views
5

Tôi đang cố gắng phát triển chương trình PERL với Cơ chế cho phép tôi đăng lại nội dung từ trang web của tôi trên một trang web khác. Nhưng tôi có một số vấn đề với mã hóa:Mã hóa dòng mới, dấu ngoặc kép và ký tự đặc biệt với Perl Mechanize

  • không có xuống dòng trong trang web khác khi tôi đăng lại nội dung của tôi
  • có dấu ngoặc kép không được giải thích
  • biểu tượng như € không giải thích quá

Trang web của tôi được mã hóa bằng UTF-8 và trang web khác được mã hóa theo ISO-8859-15. Đây là mẫu dữ liệu trên trang web của tôi và kết quả được đăng trên trang web khác:

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

đây là chương trình PERL tôi:

#!/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

Có lẽ điều này sẽ giúp: http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl – Jeef

Trả lời

1

tôi sẽ thay đổi một vài điều về cách bạn đang thu thập trang web này, nhưng có lẽ đang cố gắng để làm điều này khi cố gắng viết vào một tập tin khi mã hóa utf8:

my $out_file = 'output.html'; 
open (my $fh, ">:encoding(utf8)", $out_file) or die; 
Các vấn đề liên quan