QuoteOriginal von skiller2k1
Hmm. Kann ich nicht bestätigen. Bei mir sind alle Zeichen korrekt. Auf welche Sendung beziehst du dich?
Hi Michi,
z.B. Grey's Anatomy
QuoteOriginal von skiller2k1
Hmm. Kann ich nicht bestätigen. Bei mir sind alle Zeichen korrekt. Auf welche Sendung beziehst du dich?
Hi Michi,
z.B. Grey's Anatomy
Wer mal ins EPG von Pro7 des kommenden Freitags schaut, kann sehn dass dort jetzt das Multi-Byte-Zeichen ’ gefixt wurde (wurde durch &8217; ersetzt).
Im VDR sind an deshalb ab Freitag wieder Klötzchen zu sehn
Dieses Zeichen müsste jetzt ja durch die Zeile
$line=~s/&#(\d+);/chr($1)/ge;
in helperfunc schon konvertiert werden.
Dadurch wird es dann möglicherweise doppelt konvertiert, was wieder in einem Klötzchen endet... aber:
Was mich an der Erklärung stört: Mit den Umlauten wird genauso verfahren, und da gibt es keine Probleme...
Ich habe es jetzt mit dieser zusätzlichen Zeile
$line=~s/& #8217;/'/g;
(bitte das space zw. & und # entfernen!)
"gefixt" (muss vor der weiter oben erwähnten Zeile stehn).
Ich sehe das eher als Workaround.. hat jemand nen besseren Vorschlag wie man auch alle anderen &#XXXX; "fixen" kann?
Gruß
-mschiff
Vielleicht solltest du nochmal von vorne anfangen....
* Ist dein System wirklich auf UTF-8 eingestellt?
* tvm2vdr nochmal ganz neu installieren und dann die Patches anwenden (Die drei, die ich zusammen gepostet hab und das von skiller2k1 von gestern abend.
* vdr stoppen
* epg.data löschen
* vdr starten
* tvm2vdr laufen lassen (als vdr user!)
Gruß
-Marc
Oh, gut gesehn, danke für den fix!
Allerdings frage ich mich gerade ob man denn wohl überhaupt noch die einzelnen Zeichen umwandeln muss wenn wir jetzt eh UTF8 verwenden?
Allerdings wäre das für diese Zeichen sehr "hackish", denn man müsste die Zeichen nachwievor behandeln, weil sie ja fälschlicherweise in den XML-Files auftauchen...
Gruß
-Marc
Hallo nochmal,
Der Fehler liegt scheinbar in den XML-Dateien die aus dem Netz kommen. Dieses Apostroph ist kein 7- oder 8-Bit Zeichen, sondern ein Multibyte-Zeichen: hex: e2 80 99
Und somit ist es definitiv kein normales Hochkomma wie auf Shift-# wie man vermuten könnte.
Dort befinden sich also UTF-8 Multibyte-Zeichen in den Dateien, die dort definitiv nicht hingehören.
Alles was mir dazu einfällt ist: Es muss etwas code in tvm2vdr geben, der solche Fehler fixt.
Ein generischer Ansatz fällt mir dazu nicht ein. Ich denke es geht nur über statische fixups. Hoffentlich halten sich solche "bugs" in Zukunft dann in Grenzen.
Hat jemand ne bessere Idee?
Ich habe dazu in der /usr/share/vdr-addon-tvmovie2vdr/helperfunc in sub xmltvtranslate ab Zeile 498 mal folgendes eingefügt:
# fixups for encoding bugs in xml source files
# multibyte "’" -> "'"
$line=~s/\xe2\x80\x99/'/g;
Wenn man dann vdr stoppt, die epg.data löscht, vdr wieder startet und dann den tvm2vdr neu laufen läßt (als vdr user!), sieht das Hochkomma wieder richtig aus.
Meine komplette neue helperfunc ist anbei (mit gzip gepackt um encoding Problemen beim Transport zu entgehen ;-))
Die Datei einfach auf den VDR kopieren und dann so installieren:
(als root):
vdr:~# gunzip -c helperfunc.gz > /usr/share/vdr-addon-tvmovie2vdr/helperfunc
Gruß
-Marc
Den Apostroph-Fehler habe ich übrigens auch. Da hatte ich wohl vorher nicht richtig hingeschaut oder es tritt tatsächlich nicht immer auf.
Ich bin auf der Suche nach dem Grund...
hm, seltsam. Bei mir sehen auch diese Sendungen sauber aus. Hast du evtl an einer anderen Stelle noch einen "alten" Hack vergessen zu entfernen oder so etwas?
Komisch daran ist, dass doch das apostroph garkein sonderzeichen ist. Zumindest das normale ' ist ascii 0x27 (bzw ascii 39 (dec) oder 047 (oct))
Was an an meinen patches noch fehlt, ist eien Abfrage, ob das System überhaupt auf UTF-8 läuft und das recode wegzulassen wenn dies nicht der Fall ist, dann könnten die patches auch upstream aufgenommen werden.
Sledge Hammer: Aber das wird nicht dein Problem sein , denke ich.
Hallo ALT255,
ok dann danke an panik105, hab mich da wohl vertan
Die XML Files *dürfen* nicht vorher konvertiert werden sonst ist das konvertieren doppelt und man hat wieder Müll statt Umlauten. Also wirklich nur diese drei Diff's auf die Original Dateien anwenden und sonst *nichts* ändern bzw anderes einbauen.
Gruß
-mschiff
Hallo Onur,
dann hast du entweder kein UTF8 System oder noch an einer anderen Stelle einen Hack eingebaut der die Daten der XML-Files schon vorher konvertiert.
Hallo,
was das pack / unpack genau machen soll, hab ich mich auch schon gefragt. Und es einfach mal rauszunehmen war ne sehr gute Idee, ALT255!
Ich habe jetzt diese pack/unpack Klamotten auch mal komplett entfernt, die Dateien selbst nach UTF8 konvertiert und einen recode Aufruf für $event eingebaut.
Klappt bei mir auf Debian etch mit e-tobi Paketen (1.6.0) und vdr-addon-tvmovie2vdr 0.5.14-1 jetzt perfekt!
Gruß
-Marc
Moin allerseits,
ich habe an dem Problem letzte Nacht auch mal ein wenig rumgeforscht.
Und zwar hatte ich das Problem, dass die Description Ordnung war, aber im Title und im Subtitle immer Kästchen statt Umlauten oder SZ zu sehn waren.
Irgendwie scheint es so zu sein, dass die Title-Daten doppelt codiert sind bzw in den Quelldaten irgendwas mit der codierung nicht ganz korrekt zu sein scheint, denn wenn man sie doppelt nach utf8 umwandelt (encode("utf8", $data);) dann klappt es mit den *meisten* Daten. Vereinzelte Umlaute sind dann keine Kästechen mehr, sonder sehen so aus als wenn man UTF8 Daten mit einem latin1-Locale anschaut (oder wars umgekehrt? ;))
Also entweder ist da irgendwo ein Bug im Perlcode, der nur speziell den $title/$subtitle betrifft - hab da aber nix gefunden wo das anders behandelt wird als die anderen Daten - oder es muss wirklich noch ein check irgendwo eingebaut werden, der die Daten aus den XML-Files reparieren kann.
Mein "fix" sieht jetzt z.Z so aus, dass ich also den $title und $subtitle doppelt encode und die $description einfach.
Da dies aber m.E. nach kein 100% richtiger Fix sein kann, will ich mir jetzt auch grad nicht die Mühe machen und einen vernünfigen Patch dafür bauen (was bedeutet dass ich auch meine ganzen Test-prints etc rauskicken und aufräumen muss... ;))
Deshalb nur kurze Beschreibung, was ich jetzt, wo geändert hab sodass die EPG Daten ertragbar sind:
Datei "/usr/bin/tvm2vdr"
Dort nach den 6 Zeilen WriteEPG() suchen und oben drüber die codierung der Daten einbauen. Das sieht dann, wenns fertig ist in etwa so aus:
WriteEPG("E $eline");
$tline = encode("UTF8", "$tline" );
$tline = encode("UTF8", "$tline" );
$sline = encode("UTF8", "$sline" );
$sline = encode("UTF8", "$sline" );
$dline = encode("UTF8", "$dline" );
WriteEPG("T $tline" );
WriteEPG("S $sline") if ($sline ne "");
WriteEPG("D $dline") if ($dline ne "");
WriteEPG("V $vline") if ($vline ne "");
WriteEPG("e");
Display More
Wollte den zwischen stanbd nur mal hier abladen, vielleicht kommt damit ja jemand anders wieder ein Stück weiter...