Sonderzeichen Problem

maba

Angesehenes Mitglied
Ich möchte mal dieses Thema aufgreifen.

Ich habe einen RSS-Feed (utf-8) welchen ich mit magpieRSS in die Seite einbinden möchte. Nur gibt es mir bei den Sonderzeichen nur Fragezeichen aus. Wie oben schon beschrieben. Habe mal mit den Tipps oben herumprobiert, aber keinen Erfolg gehabt . Komisch ist auch, ich habe ein File mit dem gleichen Aufbau auf den Server geladen, dann umbenannt und dann ist es problemlos gegangen. Keine Ahnung warum.
Dazu komt, dass ich von PHP nicht viel verstehe und eure Hilfe benötige.


Der vollständige Code:
CODE
<?php header("Content-type: text/html; charset=utf-8"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Neues Seetaler Weblog - die Schlagzeilen</title>

<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="http://www.markusbaumi.ch/stylenews.css" />

</head>
<body text="#000000" bgcolor="#FFFFFF" link="#0000FF" alink="#800080" vlink="#800080">


<div id="layout">
<h2>Neues Seetaler Weblog</h2>

<div id="navi"><a href="javascript:history.back()">zurück</a></div>

<div id="inhalt">
<a href="http://www.markusbaumi.ch/weblog/">zum Weblog</a> - <a href="http://www.markusbaumi.ch/weblog/rss.xml" target="_blank">Feed</a><br />
<br /><br />

<?php

require_once('magpie/rss_fetch.inc');

$url = "http://www.markusbaumi.ch/weblog/rss.xml";

if ( $url ) {

$num_items = 10;

$rss = fetch_rss( $url );

$items = array_slice($rss->items, 0, $num_items);

foreach ($items as $item) {

$href = $item['link'];
$title = $item['title'];
$description = $item['description'];

$title = utf8_encode($title); //wandelt den titel nach UTF-8 um
$title = utf8_decode($title); //wieder zurück
$description = utf8_encode($description); //wandelt den titel nach UTF-8 um
$description = utf8_decode($description); //wieder zurück

echo "<div class=\"feed\"><a href=\"$href\" target=\"_blank\"><b>$title</b></a><br /><br />$description<br /><br /></div><br />";

}

}
?>

</div></div>

</body></html>

 
Wenn Du utf hast und iso willst, würd ich mal das probieren.
CODE $title = utf8_encode($title); //wandelt den titel nach UTF-8 um
$title = utf8_decode($title); //wieder zurück
$description = utf8_encode($description); //wandelt den titel nach UTF-8 um
$description = utf8_decode($description); //wieder zurück

->

CODE $title = utf8_decode($title); //wieder zurück
$description = utf8_decode($description); //wieder zurück

Decode heisst zurückkodieren, encode heisst kodieren.
 
Hallo,

das Teil ist einfach nicht komplett UTF-8 fähig, da die Sonderzeichen in einer anderen Kodierung ausgegeben werden. ISO-8859-15 funktioniert schon wieder, UTF-8 erkennt diese Zeichen halt nicht richtig, weshalb das � dargestellt wird.
Da musst du schon selber Nachhelfen, wie Alain Aubert richtig erkannt hat.
Entweder die Datenbank-Einträge umwandeln, das Script komplett utf-8-tauglich gestallten oder die Kodierung wieder ändern. Wobei ich das umwandeln immer etwas vorsichtig betrachten würde.
Ich empfehle hier jedoch die Multibyte String Funktionen [1] von PHP, wenn diese zur Verfügung stehen.



MfG Sascha Ahlers

[1] PHP: Multibyte String Functions
 
Danke für eure Hilfe. Aber ich kenne mich mit PH wirklich nicht aus und kann somit mit Multibyte String Functions nichts anfangen.

Was mich auch beunruhigt ist, dass es einmal funktioniert und das andere mal nicht! Habe nun noch eine Version ohne formatierung online. Diese funktioniert wieder. Komische Sache
blink.gif
 
QUOTE (maba @ Sa 23.7.2005, 18:57) [...]
Was mich auch beunruhigt ist, dass es einmal funktioniert und das andere mal nicht! Habe nun noch eine Version ohne formatierung online. Diese funktioniert wieder. Komische Sache
blink.gif


Ne, das ist ganz einfach, dort wird keine UTF-8 Kodierung verwendet bzw. es wird keine andere Kodierung innerhalb des HTTP-Headers bzw. im (X)HTML-Dokument angegeben. BTW hast du deine erste Version verändert, da war doch vorher eine Kodierungsangabe drin?


QUOTE
Encoding from server (used by Opera):
- not supplied - (windows-1252)




MfG Sascha Ahlers
 
Zurück
Oben