Schrift
[thread]6201[/thread]

LWP::Simple und utf8 Problem

Leser: 1


<< >> 10 Einträge, 1 Seite
Isegrim
 2004-04-19 14:16
#81676 #81676
User since
2004-04-01
9 Artikel
BenutzerIn
[default_avatar]
Hi,

Ich möchte eine Webseite, die unicode Zeichen enthält, mittels des
LWP::Simple Moduls lokal in einer Datei speichern. Kann ich LWP::Simple
irgendwie mitteilen, dass die Seite utf8 codiert ist? Ich habe
diesbezüglich nichts in der Doku gefunden.

Momentan gehe ich wie folgt vor:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl -w

use strict;
use warnings;
use LWP::Simple;

my $file = "tmpfile";
my $url;

$url = "http://www.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?";
$url .= "db=Pubmed&retmax=500&id=15017969&retmode=xml";

getstore($url, $file);
exit;

Allerdings werden so eben die unicode Zeichen nicht korrekt in der Datei
gespeichert sondern anscheinend irgendwie kodiert. Da ich mit unicode/utf8
nicht wirklich fit bin, würde ich mich über einen Tipp freuen, wie ich
vorgehen muss um Webseiten in utf8 Kodierung lokal in einer Datei zu
speichern.

Tom
ptk
 2004-04-19 14:47
#81677 #81677
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Deine Beispiel-URL enthaelt leider keine High-Bit-Zeichen, so dass ich es damit nicht testen kann. Aber eine andere URL scheint mit deinem Skript korrekt zu funktionieren. Welche Perl-Version auf welchem OS verwendest du?
jan
 2004-04-19 14:54
#81678 #81678
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
du willst mit pubmed arbeiten? warum das rad neu erfinden?
http://search.cpan.org/search?query=Pubmed&mode=all
Isegrim
 2004-04-19 16:10
#81679 #81679
User since
2004-04-01
9 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,19.April.2004, 12:47]Deine Beispiel-URL enthaelt leider keine High-Bit-Zeichen, so dass ich es damit nicht testen kann.[/quote]
kuck doch mal in dem XML-tag <LastName> z.B. (in dem resultierenden XML output), da sind Zeichen drin, die bei mir eben nicht korrekt dargestellt werden...

also wenn ich folgendes mache:
Code: (dl )
1
2
~> ./testscript.pl
~> grep "LastName" tmpfile

erhalte ich dann:
Code: (dl )
1
2
<LastName>UniÅiewicz</LastName>
<LastName>Biernacki</LastName>

was aber nicht korrekt dargestellt ist. Wie es richtig aussehen soll sieht man auf der entsprechenden URL.

Perl-Version:
Code: (dl )
1
2
3
~> perl -v

This is perl, v5.8.1 built for i586-linux-thread-multi
Isegrim
 2004-04-19 16:14
#81680 #81680
User since
2004-04-01
9 Artikel
BenutzerIn
[default_avatar]
[quote=jan,19.April.2004, 12:54]du willst mit pubmed arbeiten? warum das rad neu erfinden?
http://search.cpan.org/search?query=Pubmed&mode=all[/quote]
Ich will ja das Rad gar nicht neu erfinden ;-)
Ich möchte nur Daten aus Pubmed-Artikeln in einer lokalen MySQL-Datenbank speichern. Und dazu möchte ich wenn möglich alle Unicode-Zeichen erhalten.

Wie ich die Daten dann von Pubmed beziehe ist denke ich eine andere Frage, momentan benutze ich ja die eutils von Pubmed (siehe die URL in meinem ersten Posting), was mir für meinen Zweck praktikabel erscheint.

Hast du evtl. Erfahrungen mit den anderen Modulen von CPAN, auf die du hingewiesen hast, insbesondere zum Thema Unicode/utf8?
ptk
 2004-04-19 16:25
#81681 #81681
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Sorry, du hast Recht, es sind utf-Zeichen enthalten (ich habe vorhin einen falschen Perl-Einzeiler zum Testen verwendet). Allerdings bleibt es dabei, es wird ein korrekter Download gemacht. Ich bekomme Uni&śkiewicz und Bogus&ław angezeigt. (Die Forum-Software kommt allerdings mit utf-8 nicht klar :-)). Hast du auch die neueste libwww-Version installiert?
Isegrim
 2004-04-19 16:41
#81682 #81682
User since
2004-04-01
9 Artikel
BenutzerIn
[default_avatar]
ok, der download und das Schreiben in die Datei scheint korrekt zu funktionieren. Liegt wohl an der Konsole, die Unicode-Zeichen nicht richtig darstellt, denn in einem Editor (Quanta) wird alles korrekt angezeigt.

Bleibt nur noch eine Frage: kann ich das nun auch so (utf8-codiert) in eine MySQL Tabelle schreiben, ohne dass die Zeichen "umkodiert" werden, also alles nachher noch korrekt dargestellt wird (beim wiederauslesen und darstellen mittels Broweser)...?
esskar
 2004-04-19 16:46
#81683 #81683
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
am besten du wandelst alles nach Base64 um...
dann sollte es keine probleme geben...
ptk
 2004-04-19 16:54
#81684 #81684
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
MySQL kuemmert sich erstmal nicht darum, was fuer ein Encoding ein CHAR-Feld hat. Wenn du Sortierung oder Vergleichsoperatoren fuer dieses Feld brauchst, musst du dir die MySQL-Dokumentation (National Character Sets and Unicode in MySQL 4.1) anschauen.

Und zur HTML-Ausgabe: wenn deine HTML-Seite ein <meta ... charset=utf-8> enthaelt, dann sollte alles funktionieren.
Isegrim
 2004-04-19 17:09
#81685 #81685
User since
2004-04-01
9 Artikel
BenutzerIn
[default_avatar]
ok prima, Problem gelöst ... vielen Dank schonmal ;-)
<< >> 10 Einträge, 1 Seite



View all threads created 2004-04-19 14:16.