Seite 5 von 10

Verfasst: 22.11.2007 14:12
von andy3000
Aber selbst wenn ich die Datei umcodiere und die Codierung im Browser umstelle, werden trotzdem nicht alle Umlaute richtig angezeigt. :o
Und wenn ich im Browser "Automatische Auswahl" einstelle, auch nicht.

Außerdem verwenden manche Seiten iso-8859-1 (zumidest in meta-tags), machen nix mit ä ... und die Umlaute werden richtig angezeigt.
Wie soll man das verstehen?
Ich bin jetzt irgendwie durcheinander gekommen.

Verfasst: 22.11.2007 14:41
von Kendoo
Hast Du denn die Datei last_topics.php auch utf-8 codiert gespeichert?


und dann hab ich auch noch etwas vergessen und zwar gibt es in der last_topics einen Funktionsaufruf um zu lange Topictitel zu kürzen, dafür fehlt Dir aber höchstwahrscheinlich noch die zugehörige Funktion, die Du in irgendeine Datei, die global includiert wird in Deine Seiten einfügen kannst

Code: Alles auswählen

function utf8_substr($str,$from,$len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$str);
}
:D Take it Easy

Verfasst: 22.11.2007 15:25
von andy3000
Ja habe ich.
Leider kein befriedigendes Ergebnis.

Verfasst: 22.11.2007 16:12
von Kendoo
also auf jeden Fall werden die Daten jetzt korrekt ausgewertet, die Umlaute stehen ja im title Tag korrekt drin, also funktioniert das Ganze schon mal soweit

jetzt fehlt die oben genannte Funktion, Du kannst diese auch direkt in der last_topic ganz oben einfügen, denn es ist jetzt nur noch ein Problem mit der Kürzung des Topictitels festzustellen

Verfasst: 22.11.2007 16:30
von andy3000
Ja, aber nur, wenn man im Browser die Codierung eingestellt hat.
Wenn ich auf "Automatisch einstellen" klicke, werden sie wieder falsch angezeigt. D.h. die user müssen bei mir immer umschalten, wenn sie die Umlaute richtig angezeigt bekommen wollen, oder?

Verfasst: 22.11.2007 17:43
von Kendoo
also bei mir nicht, dort wird die Codierung korrekt automatisch im Browser eingestellt, siehe hier:
http://kfa-teampage.pytalhost.com/image ... g/914.jpeg

was wie gesagt immernoch fehlt ist die Funktion zum kürzen der Strings aber das hast Du sicher noch nicht eingefügt

Verfasst: 22.11.2007 17:58
von andy3000
Hmm, eigentlich habe ich den Code eingefügt, gleich nach <?php

Verfasst: 22.11.2007 18:53
von Kendoo
also dann wüßte ich auch nicht mehr, dann kannst Du nur mal kurz den von Dir verwendeten last_topic Code hier posten und ich gucke mal ob ich was finde, denn mein Original Code funktioniert ja auf meiner Seite einwandfrei und der einzigste Unterschied war halt die utf-8 Gescichte, die Du aber nun gelöst hast

Verfasst: 22.11.2007 21:45
von andy3000
OK, hier ist der Code. Ich habe ihn noch ein bisschen angepasst und das weggelassen, was ich nicht brauche. Vielleicht habe ich was falsches gelöscht, Du kennst dich da besser aus. :wink:

Code: Alles auswählen

<div style="padding:0px;background-color:transparent;"> 
<?php 
function utf8_substr($str,$from,$len){ 
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s','$1',$str); 
}
function xml2ary(&$string) { 
$parser = xml_parser_create(); 
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); 
xml_parse_into_struct($parser, $string, $vals, $index); 
xml_parser_free($parser); 
$mnary = array(); 
$ary = &$mnary; 
foreach ($vals as $r) { 
$t = $r['tag']; 
if($r['type'] == 'open') { 
if(isset($ary[$t])) { 
if(isset($ary[$t][0])) $ary[$t][] = array(); 
else $ary[$t] = array($ary[$t], array()); 
$cv = &$ary[$t][count($ary[$t])-1]; 
} 
else $cv = &$ary[$t]; 
if(isset($r['attributes'])) { 
foreach ($r['attributes'] as $k => $v) $cv['_a'][$k] = $v; 
} 
$cv['_c'] = array(); 
$cv['_c']['_p'] = &$ary; 
$ary = &$cv['_c']; 
} 
elseif($r['type'] == 'complete') { 
if(isset($ary[$t])) { 
if(isset($ary[$t][0])) $ary[$t][] = array(); 
else $ary[$t] = array($ary[$t], array()); 
$cv = &$ary[$t][count($ary[$t])-1]; 
} 
else $cv = &$ary[$t]; 
if(isset($r['attributes'])) { 
foreach ($r['attributes'] as $k => $v) $cv['_a'][$k] = $v; 
} 
$cv['_v'] = (isset($r['value']) ? $r['value'] : ''); 
} 
elseif($r['type'] == 'close') { 
$ary = &$ary['_p']; 
} 
} 
_del_p($mnary); 
return $mnary; 
} 

function _del_p(&$ary) { 
foreach ($ary as $k => $v) { 
if($k === '_p') unset($ary[$k]); 
elseif(is_array($ary[$k])) _del_p($ary[$k]); 
} 
} 

$xml=xml2ary(file_get_contents('../forum.xml')); 

if(!$xml) { 
echo "Keine Daten verfügbar"; 
} 
else { 
for($i=0;$i<5;$i++){ 
$typ = $xml['ResultSet']['_c']['topic'][$i]['_c']['typ']['_v']; 
$subject = $xml['ResultSet']['_c']['topic'][$i]['_c']['subject']['_v']; 
$zeit = $xml['ResultSet']['_c']['topic'][$i]['_c']['zeit']['_v']; 
$starter = $xml['ResultSet']['_c']['topic'][$i]['_c']['starter']['_v']; 
$poster = $xml['ResultSet']['_c']['topic'][$i]['_c']['poster']['_v']; 
$colour = $xml['ResultSet']['_c']['topic'][$i]['_c']['colour']['_v']; 
$p_id = $xml['ResultSet']['_c']['topic'][$i]['_c']['p_id']['_v']; 
$t_id = $xml['ResultSet']['_c']['topic'][$i]['_c']['t_id']['_v']; 
$f_id = $xml['ResultSet']['_c']['topic'][$i]['_c']['f_id']['_v']; 
$views = $xml['ResultSet']['_c']['topic'][$i]['_c']['views']['_v']; 
$replies = $xml['ResultSet']['_c']['topic'][$i]['_c']['replies']['_v']; 

switch ($typ){ 
case 3: $icon = "announce_unread.gif"; $title = "Announcement"; break; 
case 2: $icon = "announce_unread.gif"; $title = "Global Announcement"; break; 
case 1: $icon = "sticky_unread.gif"; $title = "Sticky"; break; 
default: $icon = "topic_unread.gif"; $title = "Topic"; 
}

echo "<h3><a href=\"../forum/viewtopic.php?f=".$f_id."&t=".$t_id."&p=".$p_id."#p".$p_id."\" title=\"".$subject."\" onclick=\"window.open(this.href); return false;\">".((strlen($subject)>40)?substr($subject,0 , 40)."...":$subject)."</a></h3>\n\n"; 
} 
} 

?> 
</div>

Verfasst: 22.11.2007 22:07
von Kendoo

Code: Alles auswählen

echo "<h3><a href=\"../forum/viewtopic.php?f=".$f_id."&t=".$t_id."&p=".$p_id."#p".$p_id."\" title=\"".$subject."\" onclick=\"window.open(this.href); return false;\">".((strlen($subject)>40)?utf8_substr($subject,0 , 40)."...":$subject)."</a></h3>\n\n"; 

der Fehler ist, Du hast im Code etwas verändert,
statt substr muss es utf8_substr heißen, was aber bei mir im Original auch so war :wink:

das liegt daran, dass man utf-8 codierte Zeichen nicht einfach irgendwo kürzen kann