PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perlscript Datenbankdaten Umlaute umwandeln



Listo
29-03-2007, 08:28
Hallo,

ich habe folgendes Problem:

Ich habe ein Perlskript, mit dem ich aus einer Datenbank Inhalte als RSS-Feed darstellen möchte. Nun beschweren sich aber die Feed-Reader, dass die Umalute nicht umgewandelt sind.
Ich bekomme aus der Datenbank nicht das ä sondern ä.

Wie kann ich nun innerhalb des Scriptes die Umlaute in Sonderzeichen umwandeln?

Gruß
Listo

reneeb
29-03-2007, 10:24
Jag' das was Du aus der Datenbank bekommst durch HTML::Entities (siehe http://search.cpan.org)

Listo
29-03-2007, 11:14
Hallo,

danke für die Antwort.
Aber ich jage die Ausgaben da schon durch

use HTML::Entities;
decode_entities($Variable);
encode_entities($Variable);

Noch einmal zu Verdeutlichung:
Aus der Datenbank bekomme ich $auml;, als Ausgabe hääte ich aber lieber ä.


Gruß
Listo

reneeb
30-03-2007, 08:13
So musst Du es machen:
C:\>perl -MHTML::Entities -e "my $var = q~ä~; my $var2 = decode_entities($var); print $var2"

Listo
02-04-2007, 10:44
Danke reneb,

aber ich rufe das Script mit einem Browser auf, da das Script auf einem Webserver abgelegt ist.

Ich habe darin folgende Einträge um die Umlaute wieder zurückzuwandeln:

use HTML::Entities;
decode_entities($Topic);
encode_entities($Topic);
decode_entities($Datestring);
encode_entities($Datestring);
decode_entities($Source);
encode_entities($Source);
decode_entities($ID);
encode_entities($ID);
decode_entities($Trailer);
encode_entities($Trailer);
decode_entities($Content);
encode_entities($Content);
decode_entities($Datum);
encode_entities($Datum);


Wie bekomme ich nun aus den Variablen die Umlaute (ä) ind ä umgewandelt.

Tut mir leid, bin aber absoluter Perl-Neuling. Kenne mich zwar mit HTML und PHP aus, jedoch nicht mit Perl.

Gruß
Listo

reneeb
02-04-2007, 15:10
$Topic = decode_entities($Topic);

Du muss den Rückgabewert nehmen...

Einfach nur die Funktion aufzurufen bringt da nichts...

Listo
03-04-2007, 06:47
Hallo,

habe das Script sowiet verändert.
Bekomme im Quelltext jedoch immer noch folgendes angezeigt:

Über den Wolken

Es sollt dort aber stehen:

Über den Wolken

Gruß
Listo

reneeb
03-04-2007, 08:27
~ 2> perl -MHTML::Entities -e ' my $var = q~Über das Wetter~; my $test = decode_entities($var); print $test '

Zeig' doch mal Deinen Code...

Listo
03-04-2007, 08:32
Hallo reneeb,

hier der Auszug aus dem Code:



use HTML::Entities;
$Topic = decode_entities($Topic);
$Topic = encode_entities($Topic);
print "<item><title>". $Topic . "</title>";


Gruß
Listo

michael.sprick
03-04-2007, 12:36
Du rufst in all Deinen Beispielen immer erst decode() und danach wieder encode() auf. Was willst Du damit bezwecken?

Schau Dir nochmal genau das letzte Beispiel voin Renee an bzw. die Doku zu HTML::Entities.

Der Vorgang ü -> &uuml; ist decode().