Schrift
[thread]8894[/thread]

WWW::Mechanize und Umlaute

Leser: 3


<< >> 6 Einträge, 1 Seite
J-jayz-Z
 2007-03-30 13:17
#75572 #75572
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

ich habe mal wieder ein Problem mit WWW::Mechanize und den Umlauten. Ich lade mir eine Seite herunter und gebe sie aus. So sehe ich die Umlaute einwandfrei. Wenn ich sie jedoch in die Datenbank schreibe, sind sie total kaputt. Auch ein
Code: (dl )
decode("utf8", $content);
hilft nicht.

Eigentlich sieht mein Script im großen und ganzen nur so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl -l
use strict;
use warnings;

use Encode;
use WWW::Mechanize;
use DBI;

my $user = 'user';
my $passwd = 'passwd';
my $db = 'db';
my $host = 'localhost';
my $driver = "DBI:mysql:$db:$host";
my $dbh = DBI->connect($driver,$user,$passwd) || die $DBI::errstr;

my $mech = new WWW::Mechanize();
$mech->get("http://personalstrategie.de/ab_21_detail.php3?nr=946&kat=ps");

my $statement = "INSERT INTO foo (content, headline) VALUES('".decode("utf8", $mech->content())."', 'foo')";
my $sth = $dbh->prepare($statement) || die $DBI::errstr;
$sth->execute() || die $DBI::errstr;

print "Ready ...";


Dann bekomme ich bei den Umlauten Zeichen wie "ýberprÃ&¼fung" oder ähnlichem. Bei der Ausgabe scheinen die Umlaute noch ok zu sein. Jemand ne Idee, wie ich das beheben kann? Auch use encoding 'iso-8859-1'; hat nichts gebracht
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
nepos
 2007-03-30 13:26
#75573 #75573
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, habe mir die Seite mal angesehen und die wäre eigentlich schon ISO-8859-1. Das mit dem decode() sollte damit eigentlich nicht nötig sein.
Hast du mal ein Beispiel, wie die Umlaute in der Datenbank dann aussehen?
J-jayz-Z
 2007-03-30 13:39
#75574 #75574
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Auch ohne, das ich es versuche zukonvertieren, sind die Umlaute totaler Müll. http://www.dooti.de/blubb.htm

Ich habe zwar ein Umlautescript geschrieben, welches immer mit s/$komischeszeichen/ü/ etc. durch die Inhalte geht und das ersetzt, aber das ist auch nicht gerade das gelbe vom Ei ... Außerdem funktioniert das nicht immer

EDIT: Link geändert, da das Umlautescript lief\n\n

<!--EDIT|J-jayz-Z|1175249062-->
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
J-jayz-Z
 2007-03-30 14:35
#75575 #75575
User since
2005-04-13
625 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich vermute, das ist ein DBI Problem. Auch, Baden-Württemberg wird so rein geschrieben, obwohl das explizit im Quelltext steht ...
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'

http://perl-tutor.de
GoodFella
 2007-03-30 22:29
#75576 #75576
User since
2007-01-09
192 Artikel
BenutzerIn
[default_avatar]
Möglicherweise hilft das hier: (weiter unten)http://perlwelt.horus.at/Beispiele/Magic/PerlUnicodeMysql/
ptk
 2007-03-31 00:19
#75577 #75577
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Statt $mech->content sollte man lieber $mech->response->decoded_content schreiben, da man sich dann nicht um das Encoding der HTML-Seite kümmern muss. Da man dann theoretisch auch Unicode-Zeichen > 255 bekommen könnte, sollte man *alles* auch als utf-8 in die Datenbank schreiben, d.h. encode("utf-8", $data) verwenden, bevor in die Datenbank geschrieben wird und decode, wenn aus der Datenbank gelesen wird. Außerdem muss man beim Bauen der neuen HTML-Seite achten, dass man das richtige Encoding verwendet.
<< >> 6 Einträge, 1 Seite



View all threads created 2007-03-30 13:17.