2014-06-26 9 views
5

Ich versuche ein Perl-Programm mit Mechanize zu entwickeln, das es mir erlaubt, Inhalte von meiner Website auf einer anderen Website erneut zu veröffentlichen. Aber ich habe einige Probleme mit Codierung:Codierung von Newline, Anführungszeichen und Sonderzeichen mit Perl Mechanize

  • es in der anderen Website nicht Newline ist, wenn ich umbuchen meine Inhalte
  • die Zitate werden nicht interpretiert
  • das Symbol wie € sind zu nicht interpretiert

Meine Website ist mit UTF-8 codiert und die andere Website ist mit ISO-8859-15 codiert. Hier ist ein Beispiel für die Daten auf meiner Website und das Ergebnis auf der anderen Website:

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

hier ist mein PERL Programm:

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

Vielleicht würde dies helfen: http://stackoverflow.com/questions/627661/how-can-i-output-utf-8-from-perl – Jeef

Antwort

1

Ich würde ein paar Dinge über ändern, wie Sie die Website kriechen, aber vielleicht versuchen, dies zu tun, wenn sie versuchen, eine Datei zu schreiben beim Encodieren utf8:

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