Univention Bugzilla – Bug 23753
UCR Werte entsprechend der locale kodieren
Last modified: 2011-12-13 15:50:14 CET
UCR könnte übergebene Werte nach den Regeln der Locale (LC_CTYPE) dekodieren und dann UTF-8 kodiert in die base.conf schreiben. Analog beim Ausgeben. (Siehe Bug #18006)
UCR versucht jetzt die Eingaben als UTF-8 zu dekodieren, und wenn dies fehlschlägt wird versucht anhand der locale zu dekodieren. univention-config-registry (7.0.23-1)
Changelog angepasst
Philipp ist folgendes aufgefallen, das kann beim Update auftreten, wenn locale-gen noch nicht lief: root@master121:~# ucr set foo=bar Setting foo root@master121:~# LC_ALL=fr_FR ucr set foo=bar Traceback (most recent call last): File "/usr/sbin/ucr", line 65, in <module> ub.main(convertToUtf8(sys.argv[1:])) File "/usr/sbin/ucr", line 48, in convertToUtf8 locale.setlocale(locale.LC_ALL, '') File "/usr/lib/python2.6/locale.py", line 513, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting root@master121:~# Ich habe jetzt einen einfachen Workaround eingebaut und setze LC_ALL auf C. @Janek bitte prüfen und anpassen.
Die Funktion locale.getpreferredencoding() macht keine Probleme. univention-config-registry (7.0.27-1) unstable; urgency=low * fix traceback with wrong locale setting (Bug #23753)
FAILED - Vielleicht kann man für ucr/encoding/strict noch ein UCR Beschreibung hinzufügen OK - nicht konvertierbare nicht UTF-8 Zeichen werden nicht gesetzt # reines UTF-8 System, das Zeichen hinter a= ist latin1 ucr set a=ä Setting a Error: UCR is running in strict mode and thus cannot accept the given input: value is not UTF-8 encoded OK - nicht vorhandene locale führt nicht zum Fehler -> ucr get locale/default locale/default: de_DE:ISO-8859-1 # locale.getpreferredencoding() wird in /usr/sbin/ucr ausgegeben ucr set a=a ISO-8859-1 Setting a -> LC_ALL=de_DE.UTF-8 ucr set a=a UTF-8 Setting a -> LC_ALL=de_DE.UTF-8sdsdsadsa ucr set a=a ANSI_X3.4-1968 Setting a OK - Werte mit der Systemkodierung (!= UTF-8) werden in UTF-8 umgewandelt # iso latin1 -> ucr set a=öööö Setting a -> ucr get a öööö root@master:~# file /etc/univention/base.conf /etc/univention/base.conf: UTF-8 Unicode text, with very long lines OK - wenn ucr/encoding/strict nicht gesetzt ist, kann ein nicht UTF-8 Zeichen in der base.conf gesetzt werden LC_ALL=asadsdf ucr set a=ö Create a -> file /etc/univention/base.conf /etc/univention/base.conf: ISO-8859 text, with very long lines OK - Update -> ucr/encoding/strict nicht gesetzt Installation -> ucr/encoding/strict auf true
(In reply to comment #5) > FAILED - Vielleicht kann man für ucr/encoding/strict noch ein UCR Beschreibung > hinzufügen Es gibt keine Beschreibung, weil diese Variable nicht einfach so geändert werden soll.
(In reply to comment #6) > (In reply to comment #5) > > FAILED - Vielleicht kann man für ucr/encoding/strict noch ein UCR Beschreibung > > hinzufügen > Es gibt keine Beschreibung, weil diese Variable nicht einfach so geändert > werden soll. OK, dann zu.
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"