Kodierungen: win1251 vs utf-8

Get help with installation and running phpwcms here. Please do not post bug reports or feature requests here.
Post Reply
Chilly_Bang
Posts: 61
Joined: Mon 18. Apr 2005, 14:05
Location: Berlin
Contact:

Kodierungen: win1251 vs utf-8

Post by Chilly_Bang »

Hallo an alle!

Folgendes Problemchen:
die ganze Seite im phpwcms ist bei mir in utf-8 kodiert. Jetzt versuche ich gerade ein Nachrichten-Kontentpart zu erstellen, wo ein XML-Feed in HTML übersetzt und auf der Seite platziert wird. Alles klappt, bis auf eine Sache:
Die .php-Datei, wo xml-html-Wandlung stattfindet ist mit win1251 kodiert - xml-Feed kommt auf Russisch. Beim Öffnen der Datei im Browser sieht alles super aus - Browser erkennt die Kodierung. Beim Einfügen der .php-Datei per Replacement Tag gibt es Konflikt - Browser erkennt die utf-8 (wie in der ganzen Seite), und macht das Teil in win1251 unlesbar.
Wenn man per Hand im Browser auf win1251 schaltet - so wird dann nur dieses Contentpart lesbar, alles andere aber nicht:)
Wenn man aber in der .php-Datei die Kodierung auf utf-8 stellt, so bleibt sie auch beim Abruf aus Browser unlesbar.

Eure Ratschläge sind dringend erwünscht:)

da ist die php-datei:

Code: Select all

<?php /* 
 
 
 /*function select_box($array, $selected, $name) { 

 // This is selectbox-function 

 $out = "<select name=\"$name\">"; 
 foreach ($array as $key => $value) $out .= sprintf("<option value=\"$key\"%s>$value</option>\n", $key == $selected ? ' selected' : ''); 
 return $out."</select>";

 } 
 */ 
 /* 
 * This is the dataarray containing the URLs and Names of the 
 * feeds to fetch. The URL goes as key. 
 */ 

 $backends2 = array( 
 "http://partner.dwelle.de/syndication/buffered/rss-feeds.510.rdf" => "ru", 
 
); 

 if (!$backend2) { 
 // If no backend is chosen, chose a random 
 srand((float) microtime() * 10000000); 
 $backend2 = array_rand($backends2); 
 } 

 // print "<h1>".$backends[$backend]."</h1>"; 
 // The form containing the selectbox 

 // print "<form action='$PHP_SELF' method='POST'>"; 
 // print select_box($backends, $backend, "backend"); 
 // print "&nbsp;<input type='submit'>"; 
 // print "</form>"; 

 // Some vars used later on 

 $insideitem = false; 
 $tag = ""; 
 $title = ""; 
 $date = "";
 $description = ""; 
 $link = ""; 
 $catagory = ""; 

 function startElement2($parser, $tagName, $attrs) { 

 // The function used when an element is encountered 

  global $insideitem, $tag; 

 if ($insideitem) { 

 $tag = $tagName; 

 } elseif ($tagName == "ITEM") { 

 $insideitem = true; 
 } 

 } 

 function characterData2($parser, $data) { 

 // The function used to parse all other data than tags 

  global $insideitem, $tag, $title, $date, $description, $link, $catagory; 
  
  if ($insideitem) { 
  
  switch ($tag) { 
  case "TITLE": 
 $title .= $data; 
 break; 
 case "DESCRIPTION": 
 $description .= $data; 
 break; 
 case "LINK": 
 $link .= $data; 
 break; 
 case "CATAGORY": 
 $catagory .= $data; 
 break; 
 case "DC:DATE": 
 $date .= $data; 
 break; 
 } 

 } 

 } 

 function endElement2($parser, $tagName) { 

 // This function is used when an end-tag is encountered. 

 global $insideitem, $tag, $title, $date, $description, $link, $catagory; 
  
 if ($tagName == "ITEM") { 
 //print_r($date);
 printf("<b><a href='%s' target='_blank'>%s</a></b><br>", 
 trim($link),htmlspecialchars(trim($title))); 
 printf("%s<br>",htmlspecialchars(trim($date)));
 printf("%s<br><br>",htmlspecialchars(trim($description))); 
 $title = $date = $description = $link = $insideitem = $catagory = false;  

 } 

 } 

 // Now to the parsing itself. Starts by creating it: 

 $xml_parser = xml_parser_create(); 

 // Then setup the handlers: 
 // CHange the Functions to match the new ones above 

 xml_set_element_handler($xml_parser, "startElement2", "endElement2"); 
 xml_set_character_data_handler($xml_parser, "characterData2"); 

 // Open the actual datafile: 
 $fp = fopen($backend2, r); 

 // Run through it line by line and parse: 
 while ($data = fread($fp, 4096)) { 
 xml_parse($xml_parser, $data, feof($fp)) 
 or die(sprintf("XML error: %s at line %d", 
 xml_error_string(xml_get_error_code($xml_parser)), 
 xml_get_current_line_number($xml_parser))); 
 } 

 // Close the datafile 
 fclose($fp); 

 // Free any memmory used 
 xml_parser_free($xml_parser); 

 ?> 
User avatar
pico
Posts: 2595
Joined: Wed 28. Jul 2004, 18:04
Location: Frankfurt/M Germany
Contact:

Post by pico »

warum verwendest du den RSS-Parser von phpWCMS nicht ?
Lieber Gott gib mir Geduld - ABER BEEIL DICH
Horst - find me at Musiker-Board
Chilly_Bang
Posts: 61
Joined: Mon 18. Apr 2005, 14:05
Location: Berlin
Contact:

Post by Chilly_Bang »

@pico

weil:

1. rss-parser von phpwcms zeigt nicht <date> und <description>. vielleicht schon - den script von phpwcms hab ich aber gar nicht probiert zu justieren. ich vermute mal, dass bei entsprechender berichtigung auch hier das auslesen von bestimmten felder klappen würde - für einen hinweis, wo die zu berichtigende datei liegt wäre ich sehr dankbar.

2. mit der deutschsprachigem Teil der Aufgabe ist auch der von mir eingesetzte Script locker fertig.

Das eigentliche Problem bereitet das news-Teil in Kyrillisch. da wird content nämlich per .js eingelesen.

was ich noch im laufe der tage festgestellt habe: mein firefox kommt mit dem russischen teil der nachrichten klar, safari und ie kapieren nicht, wie auf einer seite zwei verschieden kodierungen sein können.

ich verzweilfle langsam - die ideen sind aus.
Post Reply