diff -Naur tvm2vdr_alt/inc/helperfunc tvm3vdr_neu/inc/helperfunc
--- tvm2vdr_alt/inc/helperfunc	2011-04-28 12:19:43.000000000 +0200
+++ tvm3vdr_neu/inc/helperfunc	2011-04-28 12:20:54.000000000 +0200
@@ -308,7 +308,7 @@
 my $wertung = shift;
 my $vpsstart = shift;
 my $epgsummary = "";
-use bytes;
+#use bytes;
 $epgsummary = "$kategory/$genre"		if $wanttopflags and ($kategory or $genre);
 $epgsummary =~ s/^\///				if $wanttopflags;
 $epgsummary =~ s/\/$//				if $wanttopflags;
@@ -436,7 +436,7 @@
 			});
 	}
 } # else
-no bytes;
+#no bytes;
 }
 
 
@@ -446,7 +446,7 @@
 sub xmltvtranslate
 {
   my $line=shift;
-  use bytes;
+#  use bytes;
 
   $line=~s/&amp;/&/g;
   $line=~s/&mdash;/--/g;
@@ -495,7 +495,7 @@
   $line=~s/&nbsp;/ /g;
   $line=~s/<br>/|/ig;
   $line=~s/&#(\d+);/chr($1)/ge;
-  no bytes; 
+#  no bytes; 
 
   return $line;
 }
diff -Naur tvm2vdr_alt/inc/tvinfofetch tvm3vdr_neu/inc/tvinfofetch
--- tvm2vdr_alt/inc/tvinfofetch	2007-06-23 13:49:25.000000000 +0200
+++ tvm3vdr_neu/inc/tvinfofetch	2011-04-28 12:30:29.000000000 +0200
@@ -76,7 +76,7 @@
 	foreach $sender (sort keys(%chan)) {
 		doexit() if $please_exit;
 
-		# Kanal für tvmovie konfiguriert ?
+		# Kanal fÃ¼r tvmovie konfiguriert ?
 		next if $chan_wanted{$sender} != $identifier;
 		$channelnumber++;
 		$id = 1;
@@ -136,28 +136,42 @@
 						}
 					next unless $found;
 
-					# Gibt es überhaupt Infos?
-					last if $r->{cells}[0]->{data} =~ /An diesem Tag liegen uns zum gewählten Sender noch keine Programminformationen vor./;
+					# Gibt es Ã¼berhaupt Infos?
+					last if $r->{cells}[0]->{data} =~ /An diesem Tag liegen uns zum gewÃ¤hlten Sender noch keine Programminformationen vor./;
 					last if $r->{cells}[0]->{data} =~ /Sendeschluss/;
 					last if $r->{cells}[1]->{data} =~ /Sendeschluss/;
 
 ###############################################################################################
 # 
-# Parsen der Sendungsübersicht für einen Sender
+# Parsen der SendungsÃ¼bersicht fÃ¼r einen Sender
 #
+
+					unless ($r->{cells}[0]->{data} =~ m/^([0-9]{2}):([0-9]{2})(.*)$/) {
+						$r->{cells}[0]->{data} = $r->{cells}[1]->{data};
+						$r->{cells}[0]->{data} =~ s/&nbsp;//g;
+						$r->{cells}[0]->{data} =~ s/&amp;/&/g;
+						$r->{cells}[0]->{data} =~ s/\s+/ /g;
+						$r->{cells}[0]->{data} =~ s/^\s*//g;
+						$r->{cells}[0]->{data} =~ s/\s*$//g;
+						$r->{cells}[1]->{data} = $r->{cells}[2]->{data};
+						$r->{cells}[2]->{data} = $r->{cells}[3]->{data};
+					}
+
 					$r->{cells}[1]->{data} =~ s/&nbsp;//g;
 					$r->{cells}[1]->{data} =~ s/&amp;/&/g;
 					$r->{cells}[1]->{data} =~ s/\s+/ /g;
 					$r->{cells}[1]->{data} =~ s/^\s*//g;
 					$r->{cells}[1]->{data} =~ s/\s*$//g;
 
-					# Minuten seit Tagesanfang merken für Datumsüberlauf
+					# Minuten seit Tagesanfang merken fÃ¼r DatumsÃ¼berlauf
 					$anfang = $r->{cells}[0]->{data};
-					$minutesstart = $1*60+$2 if $anfang =~ m/^(.*?):(.*?)$/;
+
+					# Ã¼berspringe wenn in 1. Spalte keine Uhrzeit angegeben ist
+					next if !($anfang =~ m/^([0-9]{2}):([0-9]{2})(.*)$/);
+					$minutesstart = $1*60+$2 if $anfang =~ m/^([0-9]{2}):([0-9]{2})(.*)$/;
 					$start = UnixDate("$datum $anfang", "%s");
 
-					($link,$title) = ($1,$2) if $r->{cells}[1]->{data} =~ m|^<a .*?href=["'](.*?)["']>(.*?)</a>.*$|;
-					($link,$title) = ($1,$2) if $r->{cells}[1]->{data} =~ m|Sat.: <a .*?href=["'](.*?)["']>(.*?)</a>.*$|;
+					($link,$title) = ($1,$2) if $r->{cells}[1]->{data} =~ m|.*<a .*?href=["'](.*?)["']>(.*?)</a>.*$|;
 					next if $link eq "";
 					$event_id = $link;
 					$event_id =~ s/.*&sidnr=(.*?)&.*/$1/;
@@ -174,9 +188,9 @@
 					my $htmldesc=GetContent($download,$cachefile,0,0);
 
 					ParseContenttvinfo($htmldesc,$datum,$anfang);
-					$subtitle =~s/ \* $//g;
+#					$subtitle =~s/ \* $//g;
 					$subtitle =~s/^ \* //g;
-					$subtitle =~s/<br>//gi;
+					$subtitle =~s/<br>/ /gi;
 
 					($type,$genre) = split "/",$genre,2;
 
@@ -225,7 +239,8 @@
 	$linedesc =~ s#<script.*?</script>##ig;
 	$linedesc =~ s#<noscript.*?</noscript>##ig;
 	$linedesc =~ s#<!--.*?-->##g;
-
+	$linedesc =~ s#\t##g;
+	
 	doexit() if $please_exit;
 
 	$folge="";
@@ -236,6 +251,7 @@
 	$audio="Zweikanal" if $linedesc =~ m|<img src=img/symb_zweikt.gif alt='2-Kanal'>|sig;
 
 	$flags="";
+	$flags .= " [$audio]" if $audio;
 	$flags .= " [Untertitel]" if $linedesc =~ m|<img src=img/symb_gehoer.gif alt='Untertitel'>|sig;
 
 
@@ -294,20 +310,31 @@
 #print "|$darsteller|\n";
 
 
-	# saubere Zeilenumbrüche für VDR und html-tags säubern
+	# saubere ZeilenumbrÃ¼che fÃ¼r VDR und html-tags sÃ¤ubern
 	$summary =~s/.*Es liegen keine weiteren Beschreibungen zur Sendung vor.*//g;
 	$summary =~s|&nbsp;||g;
 	$summary =~s/<br><br>/<br>/g;
 	$summary =~s/<br>/|/g;
 	$summary =~s/\|$//g;
 
-	# Datumsüberlauf in der Stopzeit?
+	# DatumsÃ¼berlauf in der Stopzeit?
 	$minutesstop = $1*60+$2 if $ende =~ m/^(.*?):(.*?)$/;
 	if ($minutesstop < $minutesstart) {
 		$datum = DateCalc($datum,"+ 1 tag",\$err,0);
 		$datum = UnixDate($datum, "%Y-%m-%d");
 	}
 	$stop = UnixDate("$datum $ende", "%s");
+
+	# umkodieren in UTF-8
+	$title = encode("UTF8",$title);
+	$subtitle = encode("UTF8",$subtitle);
+	$summary = encode("UTF8",$summary);
+	$regie = encode("UTF8",$regie);
+	$genre = encode("UTF8",$genre);
+	$darsteller = encode("UTF8",$darsteller);
+	$country = encode("UTF8",$country);
+	$origtitle = encode("UTF8",$origtitle);
+
 }
 
 return 1;
diff -Naur tvm2vdr_alt/inc/tvmoviefetch tvm3vdr_neu/inc/tvmoviefetch
--- tvm2vdr_alt/inc/tvmoviefetch	2008-08-04 01:27:12.000000000 +0200
+++ tvm3vdr_neu/inc/tvmoviefetch	2011-04-28 12:43:49.000000000 +0200
@@ -147,17 +147,19 @@
 		$event=$1;
 
 		# diverse TVMovie-Sonderzeichen entfernen
-		$event =~ s|\342\200\242|*|g;
-		$event =~ s|\342\200\246|...|g;
-		$event =~ s|\342\200\223|-|g;
-		$event =~ s|\342\200\224|-|g;
-		$event =~ s|\342\200\236|'|g;
-		$event =~ s|\342\200\234|'|g;
-		$event =~ s|\342\200\231|'|g;
-		$event =~ s|\342\202\254|Eur|g; 
-		$event =~ s|\342\200\240|gestorben |g;
-		$event =~ s|\277||g; # umgekehrtes Fragezeichen
-		$event =~ s|\240||g;
+		# kann bei UTF-8 entfallen, da diese Zeichen im Zeichensatz enthalten sind
+		# und auch richtig kodiert werden, wenn in helperfunc nicht mehr "use bytes" gesetzt wird
+#		$event =~ s|\342\200\242|*|g;
+#		$event =~ s|\342\200\246|...|g;
+#		$event =~ s|\342\200\223|-|g;
+#		$event =~ s|\342\200\224|-|g;
+#		$event =~ s|\342\200\236|'|g;
+#		$event =~ s|\342\200\234|'|g;
+#		$event =~ s|\342\200\231|'|g;
+#		$event =~ s|\342\202\254|Eur|g; 
+#		$event =~ s|\342\200\240|gestorben |g;
+#		$event =~ s|\277||g; # umgekehrtes Fragezeichen
+#		$event =~ s|\240||g;
 		
 		# strings in $event nach UTF-8 konvertieren
 		$event = encode("UTF8", $event);
@@ -293,7 +295,12 @@
 		$text =~ s|</Text>||;
 
 		$summary = "";
-		$summary .= "$kurztext.|"		if $kurztext;
+		# Punkt nur anfÃ¼gen, wenn keiner da ist.
+		if ($kurztext) {
+			$summary .= "$kurztext";
+			$summary .= "." 		unless $summary =~ m|.*[.]$|; 
+			$summary .= "|";
+		}
 		$summary .= "Thema: $textt|" 		if $textt;
 		$summary .= "$text" 			if $text;
 		$summary .= "||Info: $infotext|"	if $infotext;
