Sonderzeichen in Movieviewer und Movieinfo

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Ich habe mir heute das c't magazin aufgenommen und angesehen. Dabei fiel mir auf, dass im Movieviewer und in der Movieinfo die Umlaute leider codiert dargestellt werden. ' wird als ' und & als & angezeigt. Könnte sich das mal bitte jemand ansehen und fixen, der weiß, an welchen Stellen man drehen müsste?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Ich habe mal etwas weiter geforscht. Der Fehler steckt in movieinfo.cpp. XML ist dort sehr "interessant" implementiert. Ich habe aber vermutlich die Stellen gefunden, an denen die Sonderzeichen <, >, &, " und ' maskiert und unmaskiert werden müssen.

Code: Alles auswählen

...

#define XML_ADD_TAG_STRING(_xml_text_,_tag_name_,_tag_content_){ \
	_xml_text_ += "\t\t<"_tag_name_">"; \
	_xml_text_ += _tag_content_; \
	_xml_text_ += "</"_tag_name_">\n";}

...

#define GET_XML_DATA_STRING(_text_,_pos_,_tag_,_dest_)\
	if(strncmp(&_text_[_pos_],_tag_,sizeof(_tag_)-1) == 0)\
	{\
		_pos_ += sizeof(_tag_) ;\
		int pos_prev = _pos_;\
		while(_pos_ < bytes && _text_[_pos_] != '<' ) _pos_++;\
		_dest_ = "";\
		_dest_.append(&_text_[pos_prev],_pos_ - pos_prev );\
		_pos_ += sizeof(_tag_);\
		continue;\
	}

...
Man müsste wohl die Zeile
_xml_text_ += _tag_content_; \
in so etwas wie
_xml_text_ += encodeSpecialChars(_tag_content_); \
ändern und nach der Zeile
_dest_.append(&_text_[pos_prev],_pos_ - pos_prev );\
so etwas wie
_dest_ = decodeSpecialChars(_dest_);\
einfügen.

Jemand, der mehr Ahnung von C++ hat als ich, bekommt das vermutlich relativ schnell umgesetzt und kann meine Pseudofunktionen mit Leben füllen. Vielleicht gibt es ja auch schon vorgefertigte Funktionen, die ich nicht kenne. Könnte sich bitte jemand erbarmen? :wink:
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Ich habe nun selbst eine funktionierende Umwandlung der Sonderzeichen <, >, &, " und ' für die Movieinfo programmiert. Der Patch ist getestet und funktioniert bei mir. Es wäre gut, wenn ihn noch jemand anders testen könnte. Falls niemand eine bessere Lösung parat hat, kann mein Patch ins CVS wandern.

Link entfernt
Zuletzt geändert von Gaucho316 am Sonntag 5. April 2009, 17:28, insgesamt 1-mal geändert.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Ich habe meinen Patch noch ein wenig erweitert, so dass nun in allen Strings in der Movieinfo die Sonderzeichen <, >, &, " und ' en- bzw. dekodiert werden. In der vorigen Version fehlte das noch für die Audio-PID-Namen und die Bookmark-Bezeichnungen. Der Patch ist wie immer getestet und scheint zu funktionieren.

Link entfernt
Zuletzt geändert von Gaucho316 am Montag 13. April 2009, 15:17, insgesamt 1-mal geändert.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von seife »

Die Änderungen im vcrcontrol.cpp führen IMHO dazu, dass das XML nicht mehr gültig ist. (Nicht, dass ich XML dafür für sinnvoll halte oder auch nur entfent mag, aber wenn XML, dann bitte gültiges XML ;))

Edit: ich sehe, dass du es woanders konvertierst. Aber die Frage ist, warum es vorher nicht funktioniert hat. Und warum du die ZapitTools::UTF8_to_UTF8XML() etc. noch mal neu erfinden musst. Funktioniert die original nicht?
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

seife hat geschrieben:ich sehe, dass du es woanders konvertierst. Aber die Frage ist, warum es vorher nicht funktioniert hat.
Ganz einfach. Es wurden zwar bei der Aufnahme die Sonderzeichen konvertiert, dann aber nie wieder zurück konvertiert. So stand dann z.B. im Movieviewer statt "c't magazin" eben "c&apos;t magazin", was wirklich ziemlich bescheiden aussieht.
seife hat geschrieben:Und warum du die ZapitTools::UTF8_to_UTF8XML() etc. noch mal neu erfinden musst. Funktioniert die original nicht?
Doch, natürlich funktioniert die. Man kann die auch anstelle von "encodeXmlSpecialChars" nutzen. Allerdings gibt es, soweit ich das gesehen habe, noch keine Dekodierfunktion. Da habe ich mir gedacht, dass ich dann auch gleich beide Funktionen neu erfinden kann. Das zu ändern, stellt natürlich kein Problem dar.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Spricht außer seifes Einwand noch etwas dagegen, meinen Patch ins CVS einzuchecken? Wenn es denn wirklich unbedingt sein muss, dann kann ich natürlich "encodeXmlSpecialChars()" noch durch "ZapitTools::UTF8_to_UTF8XML()" ersetzen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von rhabarber1848 »

seife hat geschrieben:Die Änderungen im vcrcontrol.cpp führen IMHO dazu, dass das XML nicht mehr gültig ist.
Ist dieser Einwand noch gültig?
Gaucho316 hat geschrieben:kann ich natürlich "encodeXmlSpecialChars()" noch durch "ZapitTools::UTF8_to_UTF8XML()" ersetzen.
Das wäre gut, der Code muss nicht größer sein als nötig.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

rhabarber1848 hat geschrieben:
seife hat geschrieben:Die Änderungen im vcrcontrol.cpp führen IMHO dazu, dass das XML nicht mehr gültig ist.
Ist dieser Einwand noch gültig?
Nein. Ich habe die Konvertierung der Sonderzeichen nur verlagert, nämlich in die Klasse "CMovieInfo", so dass die Konvertierung immer dann stattfindet, wenn es sein muss und nicht mehr nur bei der Aufnahme.

Ich nutze nun für die Konvertierung "ZapitTools::UTF8_to_UTF8XML()". Ansonsten ist der Code gleich geblieben.

Link entfernt
Zuletzt geändert von Gaucho316 am Sonntag 19. April 2009, 15:20, insgesamt 1-mal geändert.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Wie wäre es nun mit Einchecken? :wink:
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von rhabarber1848 »

Ich warte noch auf die Antwort von seife.
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Ok.
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von seife »

Wenn es die Logik nicht ändert, sondern die Konvertierung nur an anderer Stelle erfolgt, dann ist das in Ordnung, das war mir damals aus dem reinen diff nicht ganz ersichtlich (nicht alles, was ich an einem Patch zu kritisieren habe, ist immer hieb- und stichfest, da ich oft nur den diff anschaue und da eben manchmal das "grosse Bild" nicht rüber kommt.
=> rein damit

Wenn wir an anderer Stelle auch noch ähnlich unescapen müssen, dann könnte man überlegen, ob man's in die zapittools einbaut, aber das kann man dann immer noch machen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von rhabarber1848 »

seife hat geschrieben:=> rein damit
erledigt
Gaucho316
Contributor
Beiträge: 1688
Registriert: Donnerstag 17. Februar 2005, 20:24

Re: Sonderzeichen in Movieviewer und Movieinfo

Beitrag von Gaucho316 »

Danke. :)