Univention Bugzilla – Bug 20270
Verteilen von Dateien mit Umlauten funktioniert nicht
Last modified: 2023-03-25 06:42:57 CET
Ticket#: 2010100410002489 Dateien mit Umlauten im Namen werden nicht an die Schüler ausgeteilt, es gibt aber keine für den Anwender sichtbaren Fehlermeldungen. Beim Einsammeln gibt es dann allerdings Fehlermeldungen in der UMC: --- Ein Fehler ist beim Einsammeln der Dateien aufgetreten (exitcode: 1) Ein Fehler ist beim Entfernen der Deadline aufgetreten (exitcode: 1) --- Sowie einen Traceback in der "/var/log/univention/management-console-module.log": --- 04.10.10 09:23:32 ADMIN ( ERROR ) : .../distribution/__init__.py:446: distribution_project_collect_return: cmd umc-distribution-collect returned (std err): Traceback (most recent call last): File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 427, in ? main() File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 407, in main collectData( project ) File "/usr/lib/ucs-school-umc-distribution/umc-distribution", line 328, in collectData if os.path.isfile( src ): File "/usr/lib/python2.4/posixpath.py", line 208, in isfile st = os.stat(path) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 59: ordinal not in range(128) --- Das betroffene System läuft mit UTF-8 locale: # ucr search locale locale/default: de_DE.UTF-8:UTF-8 locale/keymap: de-latin1 locale: de_DE.UTF-8:UTF-8 Das Problem ist auch mit UCS 2.4 noch reproduzierbar, Logs kommen gleich von Andreas.
(In reply to comment #0) > Das Problem ist auch mit UCS 2.4 noch reproduzierbar, Logs kommen gleich von > Andreas. Das wiederholt sich für jeden Schüler an den die Datei verteilt werden soll. 29.09.10 18:22:46 ADMIN ( ERROR ) : ...ribution/umc-distribution:261: failed to copy "/var/lib/ucs-school-umc-distribution/test.data/äbla.txt" to "/home/anton11/Unterrichtsmaterial/test/äbla.txt": 'ascii' codec can't encode character u'\xe4' in position 47: ordinal not in range(128) UNIVENTION_DEBUG_BEGIN : admin.handlers.base.__getitem__ key = uidNumber UNIVENTION_DEBUG_END : admin.handlers.base.__getitem__ key = uidNumber UNIVENTION_DEBUG_BEGIN : admin.handlers.base.__getitem__ key = gidNumber UNIVENTION_DEBUG_END : admin.handlers.base.__getitem__ key = gidNumber 29.09.10 18:22:46 ADMIN ( ERROR ) : ...ribution/umc-distribution:265: failed to chown "/home/anton11/Unterrichtsmaterial/test/äbla.txt": 'ascii' codec can't encode character u'\xe4' in position 39: ordinal not in range(128)
Mein Status ist, dass das Problem auch unter 2.2 bereits auftritt. Bitte einen Patch für UCS 2.3 und UCS 2.4 bereitstellen. Der Bug sollte für das nächste Update vorgesehen werden.
Created attachment 2751 [details] Workaround für Bug 20270 (UCS@school 2.4 & 2.3) Ja, der Fehler tritt in UCS@school 2.2 auch schon auf. Problem ist, dass das UMC-Modul und deren Unterprozesse ohne Environment und damit mit nicht gesetzter LANG bzw. LC_ALL Variable gestartet werden. Python fällt dann auf ASCII als Defaultlocale zurück. Wenn die Unicode-Dateinamen (mit Umlauten) vom Frontend dann in die Defaultlocale umgewandelt werden sollen (ASCII) gibt es den oben gelisteten Decoding-Error. Der angehängte Patch gibt den übergebenen Dateinamen an die shutil-Methoden weiter, nachdem er über str() von Unicode in eine Bytefolge umgewandelt wurde. Getestet wurde mit einem UTF-8-UCS@school-SingleMaster. Als Browser sind Firefox und Konqueror zum Einsatz gekommen. Es wurde LANG entsprechend vor dem Aufruf des Browsers bzw. des Anlegens der Datei gesetzt. Browser Dateiname auf Client ==> Ergebnis auf Server de_DE.UTF-8 UTF-8 ==> UTF-8 (ok) de_DE.ISO-8859-15 UTF-8 (Dateiname hier ==> UTF-8 (Dateiname kaputt, schon kaputt angezeigt) Übertragung erfolgreich) de_DE.ISO-8859-15 de_DE.ISO-8859-15 (ok) ==> UTF-8 (ok) Sofern Browser-Locale und Locale des Dateisystems übereinstimmen, sollte die Anzeige des Dateinamens jetzt korrekt sein. Die Übertragung der Datei funktioniert jetzt mit dem Distribution-Modul.
Einspielen des Patches in das laufende System sollte über folgende Befehlssequenz funktionieren: $ cd /usr/lib/ucs-school-umc-distribution/ $ patch -p4 < bug20270.patch
(In reply to comment #4) > Einspielen des Patches in das laufende System sollte über folgende > Befehlssequenz funktionieren: > $ cd /usr/lib/ucs-school-umc-distribution/ > $ patch -p4 < bug20270.patch Bevor es zum Problem wird, daß der Patch nach dem "cd" nicht mehr im aktuellen Verzeichnis liegt, hier ein Hinweis zu den "-i" und "-d" Optionen von patch: patch -d /usr/lib/ucs-school-umc-distribution -p4 -i bug20270.patch
(In reply to comment #3) > Created an attachment (id=2751) [details] > Workaround für Bug 20270 (UCS@school 2.4 & 2.3) Ein Kunde hat den Patch erfolgreich getestet. Ticket#: 2010100410002489
Der am Bug hängende Patch wurde mit Ausnahme einer kleinen Anpassung 1zu1 übernommen. ucs-school-umc-distribution wurde neu gebaut. Fixed.
OK, Verteilen und Einsammeln von Dateien mit Umlauten im Namen funktioniert (getestet mit ucsschool hotfix für 2.4).