perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 19
Click for quality!




12.02.2012 / 03:44

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragEncoding UTF8 ISO
Seitenanfang
Hallo,
über ein Webformular erfasse ich einen kurzen Text. Der landet in einer SQL Datenbank und wird nachts als RSS-Feed ausgegeben.

Ich habe noch ein Problem, welches wohl mit dem Encoding zusammenhängt. Denn in dem Feed (den validiere ich via feedvalidator) wird etwas dazu bemängelt:

Text ist
"xyz – abc ü"

im Feedvalidator wird dann bemändelt:
"...title contains bad characters..."
<title>xyz \x96 abc ü</title>

Den Feed deklariere ich als
<?xml version="1.0" encoding="iso-8859-1"?>

Generiert wird der mit dem Modul XML::RSS;

- Wenn ich den Quellcode des Feeds auf dem Server editiere steht da schon "xyz ~V abc ü".

%-(

Wo muss ich nun ansetzen, um das Problem in den Griff zu bekommen?

Datum: 15.05.2006-17:45

Beitragre: Encoding UTF8 ISO
Seitenanfang
ich kenn mich mit dem thema zwar überhuapt nicht aus, aber bei der Meldung sticht mir gleich das ü ins auge. hast du es schonmal ohne dies probiert?

greets

Datum: 15.05.2006-21:15

Beitragre: Encoding UTF8 ISO
Seitenanfang
das ü ist nicht das Problem, sondern der lange Bindestrich, der vermutlich nicht im iso-8859-1 zeichensatz (und evtl auch nicht utf8???) vorkommt

Wenn ich den Feed im Firefox aufrufe, dann wird der als "–" korrekt angezeigt

Lass ich mir den Quelltext im Scite anzeigen, so wird das Zeichen als " – " dargestellt, das ü allerdings auch "ü".

Der Server liefert laut http-header übrigens utf8.

Datum: 16.05.2006-09:37

Beitragre: Encoding UTF8 ISO
Seitenanfang
hallo,

um ggf. UTF-8 in Latin zurückzuwandeln kannst Du diese funktion verwenden:


sub fgszUtf8ToLatin {

my $szString= shift ( @_ ) || '';


# ersetze alle Zeichen groeßer 8 bit durch "?":
#----------------------------------------------

$szString =~ s/[\xC4-\xFE][\x80-\xBF]+/\?/g;

# ersetze alle mit genau 8 bit durch ihr ASCII-Zeichen:
#------------------------------------------------------
$szString =~ s/([\xC0-\xC3])([\x80-\xBF])/chr( (ord($1) & 3)*64 + (ord($2) & 63))/eg;

return ( $szString );

} # end fgszUtf8ToLatin

Datum: 16.05.2006-09:51

-






-
-