Seite 1 von 2

RSS Import - Problem mit Umlauten und Sonderzeichen

Verfasst: Sa 25. Feb 2006, 14:38
von fullmonty
Hilfe!

Habe den folgenden RSS-Feed in meine Seite eingebaut (und auch andere).

Code: Alles auswählen

http://news.google.ch/nwshp?tab=wn&ned=de_ch&topic=t&output=rss
Das Kind läuft prächtig, nur leider werden die Umlaute und Sonderzeichen falsch angezeigt.

Habe jetzt mehrmals im Forum nach einer Lösung gesucht.
Der Ansatz in folgendem Thread habe ich auch durchgespielt. Leider ohne Erfolg.
http://www.contenido.de/forum/viewtopic.php?t=10882

Auch dieser brachte nichts:
http://contenido.org/forum/viewtopic.php?t=11247

Kann mir da jemand helfen?

Herzlichen Dank.

Verfasst: Sa 25. Feb 2006, 20:46
von rezeptionist
Versuche bitte nocheinmal den 2ten link, nachdem du die Änderungen gemacht hast leere einmal deinen con_code (leeren nicht löschen) und deinen Browsercache, dann sollte es gehen.

Verfasst: So 26. Feb 2006, 15:09
von fullmonty
Was meinst Du mit con_code? Wo finde ich den?
Gruss

Verfasst: So 26. Feb 2006, 15:12
von mvf
fullmonty hat geschrieben:Was meinst Du mit con_code? Wo finde ich den?
Gruss
die tabelle con_code aber wie gesagt LEEREN nicht löschen

Verfasst: So 26. Feb 2006, 16:03
von rezeptionist
In deiner Datenbank (Wiederholung LEEREN nicht löschen)

Verfasst: So 26. Feb 2006, 20:38
von fullmonty
Danke für die Hilfe, leider hauts immer noch nicht hin...

Hier eine kleine Rekapitulation was ich gemacht habe:
1.) Code im Modul RSS Reader wie folgt angepasst (title ohne html_entities am Ende. Da ich nur den Title ausgebe, hab ich auch nur diesen angepasst).

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     Insert RSS feed
* Authors:     :       Timo Hummel, Andreas Lindner
* Copyright   :     Contenido - four for business
* Created     :     30.09.2005
************************************************/

cInclude("pear", "XML/Parser.php");
cInclude("pear", "XML/RSS.php");

if ("CMS_VALUE[0]" == "")
{
  $sFeed = "http://www.contenido.org/rss/de/news";
} else {
  $sFeed = "CMS_VALUE[0]";
}

if ("CMS_VALUE[2]" == "")
{
  $FeedMaxItems = 999;
} else {
   $FeedMaxItems = intval("CMS_VALUE[2]");
}

/* Preparse feed for an encoding due to the poorly designed
   PHP XML parser */
$sFeedContent = substr(@file_get_contents($sFeed),0,1024);
$sFeedContent = utf8_decode($sFeedContent);

$regExp = "/<\?xml.*encoding=[\"\'](.*)[\"\']\?>/i";
     
preg_match($regExp,trim($sFeedContent),$matches);

if ($matches[1])
{
  $rss =& new XML_RSS($sFeed, $matches[1]);
} else {
  $rss =& new XML_RSS($sFeed);
}

$rss->parse();

$tpl = new Template;

$i = 0;
foreach ($rss->getItems() as $item)
{
   if ($i < $FeedMaxItems) {
             
$tpl->set("d", "TITLE", $item['title']); 
$tpl->set("d", "LINK", htmlentities($item['link'],ENT_QUOTES));
$tpl->set("d", "DESCRIPTION", utf8_decode(htmlentities($item['description'],ENT_QUOTES)));        
       $tpl->set("d", "READ_ON", mi18n("weiterlesen"));
       $tpl->next();
   }
   $i++;
}

$tpl->generate($cfgClient[$client]["path"]["frontend"]."templates/"."CMS_VALUE[1]");
?>
2.) Dann habe ich die Tabelle con_code geLEERT und nicht gelöscht. Hab den Cache geleert und jetzt siehts so aus (gebracht hats nichts).
Bild

Ich verwende das HTML-Template "rss.html" mit folgendem Code:

Code: Alles auswählen

<!-- BEGIN:BLOCK -->
<a target="_blank" href="{LINK}">{TITLE}</a><br><br>
<!-- END:BLOCK -->
any ideas?
Danke
R.

Verfasst: So 26. Feb 2006, 20:47
von mvf
nur mal so zur info

habe in eine standard 464 deinen rss link eingegeben

http://news.google.ch/nwshp?tab=wn&ned= ... output=rss

sprengt alles :?

Verfasst: So 26. Feb 2006, 20:50
von rezeptionist
Versuch mal nen anderen Feed, und teile uns mit ob es da auch noch passiert ansonsten poste mal den Headteil deines Layouts !

Verfasst: So 26. Feb 2006, 20:54
von rezeptionist
Wie gesagt versuch mal nen anderen ! :wink:

Verfasst: So 26. Feb 2006, 21:05
von fullmonty
Sorry, für die vorschnelle Antwort. Also hab den folgenden Feed eingebaut
http://www.microsoft.com/germany/msdn/rss/aktuell.xml

und folgende Resultat erhalten:

Bild

Hier mein Header:

Code: Alles auswählen

<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>qualityandvalue.ch - managing your present, preparing your future</title>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
#claim {
	position:absolute;
	width:34px;
	height:650px;
	z-index:1;
	left: 17px;
}
}
#misc {
	position:absolute;
	width:206px;
	height:149px;
	z-index:2;
	left: 700px;
	top: 283px;
}
#logo {
	position:absolute;
	width:206px;
	height:224px;
	z-index:2;
	left: 572px;
	top: 0px;
}
#content {
	position:absolute;
	width:298px;
	height:334px;
	z-index:3;
	left: 262px;
	top: 25px;
}
#nav {
	position:absolute;
	height:53px;
	z-index:4;
	left: 50px;
	top: 25px;
}
-->
</style>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
Danke für Eure Feedbacks.
R.

Verfasst: So 26. Feb 2006, 21:10
von rezeptionist
jetzt noch ne Frage was steht den bei dir Im Browser zb. FF unter Ansicht Zeichenkodierung ???

Verfasst: So 26. Feb 2006, 21:11
von fullmonty
western iso-8859-1

Verfasst: So 26. Feb 2006, 21:16
von rezeptionist
hm soweit ich sehen kann müsste es gehen einzige auffälligkeit beim drüberschauen ist die eine Klammer zuviel nach claim }. Ich muss mal schauen, wenn ich heute nacht dazukomme das ich es mal auf ner Seite von mir versuche, kann aber nichts versprechen.

Verfasst: So 26. Feb 2006, 21:21
von fullmonty
Wäre wirklich toll! Würde Dir ein Denkmal bauen :)

Habe der Schönheit wegen noch die Klammer gelöscht.

Herzlichen Dank.
R.

Verfasst: So 26. Feb 2006, 22:46
von rezeptionist
so bei mir gehts jetzt nimm den Originalcode und tausche folgendes aus

Code: Alles auswählen

$regExp = "/<\?xml.*encoding=[\"\'](.*)[\"\']\?>/i"; 
gegen

Code: Alles auswählen

$regExp = "/<\?xml.*encoding=[\"\'][\"\']\?>/i";
Und bitte frag nicht warum es so geht, müsste mich erst mal richtig in die Thematik einlesen :wink: