LC_CTYPE-Locale auf eine UTF-8-Locale setzen
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Nov 2018 14:20:47 +0000 (15:20 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 26 Nov 2018 14:20:47 +0000 (15:20 +0100)
commit497b9801238cc3aef87293b09f1cecf68ecdbcfa
tree9d1f2a7ff635c751a4e2f68cba38fae6ddf3a285
parentab18d1c0c613c094e576be22c0f788dfa19165bc
LC_CTYPE-Locale auf eine UTF-8-Locale setzen

Beim Starten des Perl-Interpreters wird die Locale anhand von
Umgebungsvariablen wie `LC_CTYPE`, `LC_ALL` und `LANG`
gesetzt. Unter (F)CGI sind diese normalerweise leer, wodurch als
Locale die POSIX-Locale (`C`) gewählt wird — und die hat nur ASCII als
Zeichensatz.

Die iconv-Funktion scheint nun nicht transliterieren zu können, wenn
ASCII als Zeichensatz ausgewählt ist. Sie macht dann z.B. aus `ć` ein
`?` anstelle von `c`.

Beim Start der Programme wird nun `LC_CTYPE` auf eine sinnvoller
Locale gesetzt. Dies ist `de_DE.UTF-8` oder `en_US.UTF-8`, falls
erstere nicht verfügbar ist. Die Sprache ist hierbei irrelevant, da
nur `LC_CTYPE` gesetzt wird und und nicht z.B. auch `LC_MESSAGES` oder
`LC_TIME`.

Dies ist Voraussetzung dafür, das #348 gefixt werden kann.
SL/Dispatcher.pm
scripts/task_server.pl