- Mitglied seit
- 10 Mai 2006
- Beiträge
- 15,619
- Punkte für Reaktionen
- 1,947
- Punkte
- 113
Ich suche jemanden, der mal die Gegenprobe für ein Problem macht, das mir aufgefallen ist.
In einer FRITZ!Box gibt es normalerweise keine Locale-Definitionen ... d.h. die Variablen "LC_ALL", "LANG" und "LC_CTYPE" sind nicht gesetzt im Environment. Auch in Freetz habe ich auf die Schnelle keine Stelle gefunden, wo sie gesetzt würden.
Damit aktiviert eine BusyBox, die mit der Option "FEATURE_CHECK_UNICODE_IN_ENV=y" übersetzt wurde, ihre Unicode-Fähigkeiten aber gar nicht erst ... das Ergebnis ist eine Länge von 6 für die Zeichenkette "äöü".
So weit, so gut ... aber spannend wird es jetzt, wenn man das mal mit aktivierter Unicode-Locale wiederholt:
Anstelle des nunmehr korrekten Ergebnisses von 3 Zeichen, erhält man pro enthaltenem Multibyte-Zeichen ein Byte vom Beginn der Zeichenkette (das kann man mit zwei Umlauten auch schön testen) und erst danach das korrekte Ergebnis (hier die 0x33 als ASCII-Kodierung für die "3").
Nun wäre das alles halb so wild, ergäbe diese Auswertung der Länge nicht das komplett falsche Ergebnis.
Zwar ist es auch recht angenehm, bei der Shell-Eingabe mit Unicode-Zeichen zu arbeiten, weil dann auch das Zählen klappt und das Editieren von Eingabezeilen sogar dann funktioniert, wenn diese ein Multibyte-Zeichen enthalten (wer schon mal vom kleinen "L" auf das "ö" abgerutscht ist und das irgendwie am Command-Prompt korrigieren wollte, weiß was ich meine), aber darauf muß man dann offenbar besser verzichten, solange das Aktivieren von UTF-8 solche Probleme mit normalen (voll POSIX-kompatiblen) Shell-Konstrukten verursacht.
Bevor ich das jetzt in der BusyBox-Mailing-Liste einkippe (oder, wenn das dort bereits korrigiert sein sollte, einen Patch für Freetz und die 1.24.2 daraus zimmere), hätte ich gerne noch eine zweite Meinung bzw. jemanden, der meine o.a. Erfahrungen bei sich einmal verifiziert.
Danke vorab ...
EDIT:
Gerade habe ich eine 1.28.0 (die aktuelle Entwicklerversion der BusyBox) mal ausgecheckt und übersetzt ... da ergibt das auch eine "ordentliche" Ausgabe; es ist also im Upstream mittlerweile korrigiert.
@er13:
Was ist Deine Ansicht zur BusyBox? Mittlerweile ist die 1.27.2 ja "stable" seit Mitte August und die 1.24.2 im Freetz-Trunk ist ohnehin weiter als die von AVM immer noch verwendete 1.22.1 ... da stellt sich die Frage, ob man eher den betreffenden Patch als Backport in die 1.24.2 übernimmt (mal unterstellt, daß es problemlos machbar ist) oder ob man die BusyBox gleich komplett auf eine neue Version aktualisiert. Es sind ja auch einige interessante Applets mittlerweile hinzugekommen (z.B. ein Hex-Editor und ein paar Erweiterungen für Mehrprozessorsysteme).
In einer FRITZ!Box gibt es normalerweise keine Locale-Definitionen ... d.h. die Variablen "LC_ALL", "LANG" und "LC_CTYPE" sind nicht gesetzt im Environment. Auch in Freetz habe ich auf die Schnelle keine Stelle gefunden, wo sie gesetzt würden.
Damit aktiviert eine BusyBox, die mit der Option "FEATURE_CHECK_UNICODE_IN_ENV=y" übersetzt wurde, ihre Unicode-Fähigkeiten aber gar nicht erst ... das Ergebnis ist eine Länge von 6 für die Zeichenkette "äöü".
Code:
root@FB7490:~ $ test="äöü";echo ${#test}
6
Code:
root@FB7490:~ $ export LC_ALL=en_US.UTF-8;test="äöü";echo ${#test} | hd
00000000 c3 a4 c3 33 0a |...3.|
00000005
Nun wäre das alles halb so wild, ergäbe diese Auswertung der Länge nicht das komplett falsche Ergebnis.
Zwar ist es auch recht angenehm, bei der Shell-Eingabe mit Unicode-Zeichen zu arbeiten, weil dann auch das Zählen klappt und das Editieren von Eingabezeilen sogar dann funktioniert, wenn diese ein Multibyte-Zeichen enthalten (wer schon mal vom kleinen "L" auf das "ö" abgerutscht ist und das irgendwie am Command-Prompt korrigieren wollte, weiß was ich meine), aber darauf muß man dann offenbar besser verzichten, solange das Aktivieren von UTF-8 solche Probleme mit normalen (voll POSIX-kompatiblen) Shell-Konstrukten verursacht.
Bevor ich das jetzt in der BusyBox-Mailing-Liste einkippe (oder, wenn das dort bereits korrigiert sein sollte, einen Patch für Freetz und die 1.24.2 daraus zimmere), hätte ich gerne noch eine zweite Meinung bzw. jemanden, der meine o.a. Erfahrungen bei sich einmal verifiziert.
Danke vorab ...
EDIT:
Gerade habe ich eine 1.28.0 (die aktuelle Entwicklerversion der BusyBox) mal ausgecheckt und übersetzt ... da ergibt das auch eine "ordentliche" Ausgabe; es ist also im Upstream mittlerweile korrigiert.
@er13:
Was ist Deine Ansicht zur BusyBox? Mittlerweile ist die 1.27.2 ja "stable" seit Mitte August und die 1.24.2 im Freetz-Trunk ist ohnehin weiter als die von AVM immer noch verwendete 1.22.1 ... da stellt sich die Frage, ob man eher den betreffenden Patch als Backport in die 1.24.2 übernimmt (mal unterstellt, daß es problemlos machbar ist) oder ob man die BusyBox gleich komplett auf eine neue Version aktualisiert. Es sind ja auch einige interessante Applets mittlerweile hinzugekommen (z.B. ein Hex-Editor und ein paar Erweiterungen für Mehrprozessorsysteme).
Zuletzt bearbeitet: