Schrift
[thread]6911[/thread]

utf 8: lesen und schreiben von utf8-html-seiten

Leser: 1


<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten
Gast Gast
 2005-04-19 21:03
#53963 #53963
hallo zusammen,

ich habe versucht den Kode einer französischen HTML-Seite, die in utf-8 kodiert ist, durch perl zu lesen, nur den Text zu extrahieren, um diesen dann in einer Text-Datei zu speichern.

Das problem ist dass im Ergebnis einige Buchstaben durch komischen Zeichen ersetzt sind. Komischerweise werden diese Buchstaben nicht immer ersetzt. D.h. manschmal sind richtig und manschmal sind die ersetzt.

als Beispiel hier ist der original Text aus dem Browser:
Du temps du président Sukarno,l&’Indonésie affichait sans équivoque son mépris pour les contraintes du développement économique et les relations qu&’il implique avec les pays occidentaux.

das extrahierte Text sieht so aus:
Du temps du président Sukarno, l&’Indonésie affichait sans équivoque son mépris pour les contraintes du développement économique et les relations qu&’il implique avec les pays occidentaux.

Bemerkung &’ = Apostroph
GwenDragon
 2005-04-19 21:09
#53964 #53964
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
[quote=Guest,19.04.2005, 19:03]hallo zusammen,

ich habe versucht den Kode einer französischen HTML-Seite, die in utf-8 kodiert ist, durch perl zu lesen, nur den Text zu extrahieren, um diesen dann in einer Text-Datei zu speichern.[/quote]
Und wie machst du das? Ist das dein großes Geheimnis?
Welche Perl-Version?
GwenDragon
 2005-04-19 21:12
#53965 #53965
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Schon einmal was von CPAN:Encode gehört?\n\n

<!--EDIT|GwenDragon|1113931003-->
newbie001
 2005-04-19 21:48
#53966 #53966
User since
2005-04-19
8 Artikel
BenutzerIn
[default_avatar]
hi GwenDragon;

mein Program sieht wie folgt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
my $fn = '/usr/.....';
open($R,"<:utf8",$fn);

$tree->parse_file($R);
@text_nodes = $tree->look_down("_tag","p",
         "class","spip",
         "align","justify");
my $txt = "";
foreach my $node (@text_nodes){
 $txt .= $node->as_text();
 $txt .= "\n";
}

open(W,">:utf8","out.txt");
print W $txt;
close W;
ptk
 2005-04-19 22:34
#53967 #53967
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du hast gesagt, dass du utf-8 als Ausgabe moechtest,also hast du auch utf-8 bekommen! Versuch's mal bei der Ausgabe mit encoding(iso-8859-1) statt utf-8.\n\n

<!--EDIT|ptk|1113935770-->
newbie001
 2005-04-19 22:49
#53968 #53968
User since
2005-04-19
8 Artikel
BenutzerIn
[default_avatar]
wenn ich nicht sage dass die Ausgabe utf8 ist (also statt die Zeile open(W,">:utf8","out.txt") nur open(W,">out.txt") benutze)
bekomme ich den folgenden fehler:
Wide character in print

mit encoding(iso-8859-1) ist es auch nicht besser, da ich folgeden Fehler bekomme: "\x{2019}" does not map to iso-8859-1
pKai
 2005-04-20 00:44
#53969 #53969
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
[quote=newbie001,19.April.2005, 20:49]"\x{2019}" does not map to iso-8859-1[/quote]
Damit wirst du wohl leben müssen.
In Unicode gibt es halt zu viele Zeichen und die können nicht alle sinnvoll in die <256 Zeichen eines ISO-Zeichensatzes abgebildet werden.
In dem Fall \x{2019} ( =&’ )
->unicode.org
handelt es sich um ein typographisches Apostroph, für das sie als Ersatzdarstellung ein normales Apostroph \x{0027} vorschlagen.
Warum Perl das nicht für dich macht, weiß ich nicht.\n\n

<!--EDIT|pKai|1113943541-->
I sense a soul in search of answers.
ptk
 2005-04-20 12:40
#53970 #53970
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn man eine Ersatzdarstellung haben will, muss man Text::Unidecode oder Text::Unaccent oder Text::StripAccents verwenden. Bei der Verwendung von Text::Unidecode empfehle ich einen Blick in den entsprechenden rt.cpan.org-Bereich, da liegt ein Vorschlag, wie man das Modul besser mit iso-8859-1 funktioniert (ansonsten wuerde Text::Unidecode auch deutsche Umlaute umwandeln).

Oder du benutzt einen anderen 8-Bit-Zeichensatz, der das Zeichen darstellen kann. Die Windows-Zeichensaetze (cp1250 etc.) koennen das.
newbie001
 2005-04-20 12:50
#53971 #53971
User since
2005-04-19
8 Artikel
BenutzerIn
[default_avatar]
man soll jedoch die wichtigste Frage nicht vom Augen verlieren:
warum bei einer Texteingabe, die in UTF8 richtig kodiert ist (sie wird vom Browser richtig dargestellt und wenn man den Text vom Browser durch copy-paste in einem normalen Editor einfügt werd der Text auch richtig dargestellt) bekomme ich dann als ergebnis einen verfälschten Text?????
ptk
 2005-04-20 13:09
#53972 #53972
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man muss Software sagen, ob es sich um utf-8 handelt oder nicht. Wenn du copy'n'paste machst, dann wird mit Sicherheit ein utf8-Flag im Clipboard gesetzt, so dass alle anderen Programme wissen, dass es sich um utf8 handelt.
<< |< 1 2 3 >| >> 26 Einträge, 3 Seiten



View all threads created 2005-04-19 21:03.