Modul RSS feed generator: Wie Sprach-Encoding verwenden?

Gesperrt
markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Modul RSS feed generator: Wie Sprach-Encoding verwenden?

Beitrag von markusheinzer » Do 16. Mär 2006, 08:07

Hallo zusammen

Ich versuche seit Tagen, das bei der 4.6.4 mitgelieferte Modul "RSS feed generator" so zu frisieren, dass es den Encoding-Typ für die jeweilige Sprache mitliefert. Also konkret sollte natürlich ein bulgarischer Artikeltitel dann auch im dynamischen Bookmark mit kyrillischen Zeichen angezeigt werden und nicht so: ÁßØáêÚ ÝÐ ¾ÑãçØâÕÛØ Ø µÚáßÕàâØ

Ich habe ins Modul mal statt nur:

Code: Alles auswählen

#Output feed header
header("Content-type: text/xml");

echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>
";
noch folgende Abfrage mit eingebaut:

Code: Alles auswählen

#Output feed header
header("Content-type: text/xml");

$db = new DB_Contenido;
$sql = "SELECT LANG.encoding
          FROM {$cfg['tab']['lang']} AS LANG
         WHERE LANG.idlang = $lang";
$db->query($sql);
$db->next_record();
$encode = $db->f("encoding");

echo '<?xml version="1.0" encoding="'.$encode.'"?>
';
Im Quelltext des RSS-Feed-Artikels wird die Ersetzung sauber gemacht, nur zeigt der Firefox weiterhin ÁßØáêÚ ÝÐ ¾ÑãçØâÕÛØ Ø µÚáßÕàâØ statt des bulgarischen Titels an.

Hat jemand eine Idee, woran das liegen könnte?
Vielen Dank

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence » Mo 20. Mär 2006, 15:11

vielleicht mittels header das encoding auch setzen ?

Code: Alles auswählen

#Output feed header 
header("Content-type: text/xml"); 

$db = new DB_Contenido; 
$sql = "SELECT LANG.encoding 
          FROM {$cfg['tab']['lang']} AS LANG 
         WHERE LANG.idlang = $lang"; 
$db->query($sql); 
$db->next_record(); 
$encode = $db->f("encoding"); 

header("Content-Type: text/xml; charset=".$encode);
echo '<?xml version="1.0" encoding="'.$encode.'"?>';
keine ahnung ob das dann funktioniert, aber nen versuch ist es wert...
*** make your own tools (wishlist :: thx)

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » Fr 24. Mär 2006, 13:55

ich glaub, ich habe so etwas schon versucht. Aber ich werde das gerne noch genau nach deinem Vorschlag versuchen. Allerdings nicht vor Ostern, da ich bis dann nicht an einen anstaendigen Computer zu sitzen kommen werde.

markusheinzer
Beiträge: 81
Registriert: Do 8. Sep 2005, 13:18
Wohnort: Sarajevo
Kontaktdaten:

Beitrag von markusheinzer » Sa 22. Apr 2006, 11:02

Ich habe jetzt zufällig eine Lösung gefunden, die zwar funktioniert, aber die ich mir eigentlich nicht restlos erklären kann.

Erstens habe ich die Header-Ausgabe etwas anders geschrieben:

Code: Alles auswählen

#Output feed header
$encode = $encoding[$lang];
header("Content-Type: application/xml; charset=$encode"); 

echo '<?xml version="1.0" encoding="'.$encode.'"?>
';
Die Zeile $encode = $encoding[$lang]; ist nur die etwas kürzere Art, zum encoding-typ zu kommen. Daran liegt der Effekt nicht.

Nun: Das ganze funktioniert super, sobald man weiter unten (dort wo die Headline der einzelnen Links präpariert wird) folgenden Code

Code: Alles auswählen

$headline = prepareStringForOutput($headline);

mit diesem Code ersetzt:

Code: Alles auswählen

$headline = imap_utf8($headline);
Es funktioniert bei meiner Seite auf englisch, auf bulgarisch (kyrillisch iso-8859-5), auf serbokroatisch (iso-8859-2).

Kann mir einer erklären kann, warum?
Ansonsten ist auch egal. Hauptsache, es funzt.

Gesperrt