LC_ALL = C ist gesetzt, keine Ahnung warum

582
Tim Hilt

Ich verwende st, das simple-terminal oder das suckless-terminal, ein Terminal mit Unicode-Unterstützung.

Ich habe zwei Maschinen, beide arbeiten mit Arch Linux mit den gleichen Systemeinstellungen, aber ich bekomme nur Unicode-Unterstützung auf der alten Maschine!

Nach einigen Nachforschungen denke ich, dass es etwas mit meinen Landschaften zu tun hat, aber ich bin mir nicht ganz sicher.

locale gibt:

[tim@x1carbon: ~]$ locale LANG=en_DE.UTF-8 LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL=C 

Nach meinem Verständnis bedeutet dies, dass alles, was geschrieben "..."wird, implizit gesetzt wird, und die einzigen explizit festgelegten Gebietsschemas wären LANGund LC_ALL.

Ich habe festgelegt LANG=de_DE.UTF-8in /etc/locale.conf.

[tim@x1carbon: ~]$ cat /etc/locale.conf LANG=de_DE.UTF-8 LC_COLLATE=C LANGUAGE=en_US.UTF-8 

aber ich kann mich nicht erinnern, LC_ALLüberhaupt eingestellt zu haben (auf meinem alten Rechner ist diese Variable leer, wenn ich renne locale)!

Ich lief sudo grep -rnw '/usr/' -e 'LC_.*=C'(ein Suchmuster, das jede Datei im /usr/-Verzeichnis durchsucht), das viele Skripts und Dateien mit ausgibt LC_ALL=C, aber in den meisten Fällen schätze ich, dass die vorhandenen Programme nur meine set LC_ALL-Variable lesen und ihren Skripten passende Variablen hinzufügen.

Ich kann nicht herausfinden, wo ich diese Variable tatsächlich eingestellt habe, und ich könnte mit meinem Verständnis falsch liegen, dass dies der Grund für das falsche Rendern ist. Dennoch: Das Setzen LC_ALLeines falschen Gebietsschemas kann eine Menge anderer Probleme verursachen, die ich denke.

Darüber hinaus localectl statusstellt aus:

[tim@x1carbon: ~]$ localectl status System Locale: LANG=de_DE.UTF-8 LANGUAGE=en_US.UTF-8 LC_COLLATE=C VC Keymap: de-latin1 X11 Layout: n/a 

... die gleiche Ausgabe wie auf der Arbeitsmaschine.

Ich habe die Ausgabe des grep-Befehls in eine Protokolldatei geleitet und ich kann diese Datei irgendwo hochladen, aber ich weiß nicht, wie ich das richtig mache, da ich noch keinen Grund dafür hatte.

0

2 Antworten auf die Frage

0
egmont

"Könnte das das Problem sein?" - Ja.

Die meisten Anwendungen nehmen Sie die Codierung aus LC_ALL, LC_CTYPEoder LANGdie erste, die in dieser Liste nicht leer ist. Der aufgelöste Wert wird auch durch angezeigt locale charmap. Soweit ich es verstehe, sind Sie sich LC_CTYPE=CIhrer Sache nicht sicher LC_ALL. Diese sollten anstelle von C ein UTF-8-Gebietsschema enthalten.

"Wie kommt es, dass die Gebietsschemas auf meinem alten System festgelegt sind" - Die Frage sollte eher lauten: Wie kommt es, dass sie nicht auf Ihr neues System eingestellt sind? Ich kann das leider nicht beantworten, aber sie sollten festgelegt werden.

Danke, das hat mich in die richtige Richtung gelenkt, denke ich. Siehe Bearbeiten zur ursprünglichen Frage Tim Hilt vor 5 Jahren 0
0
Tim Hilt

Nach dem Öffnen eines Threads im Archlinux-Forum wies jemand darauf hin, dass ich möglicherweise LC_ALL=Cirgendwo in einer Datei in meinem Home-Verzeichnis ablege . Nach dem Laufen stellte grep -rnw '/home/' -e 'LC_.*=C'ich fest, dass in meiner .bashrc eine Zeile stand

export LC_ALL=C 

die ich gelöscht habe Nach einem Neustart localegab mir das Laufen die en_DE.UTF-8meisten meiner Gebietsschemas, was noch verwirrender ist. Nachdem ich jedoch meine regionalen Einstellungen (mit KDE als Desktop) durchgesehen hatte, stellte ich fest, dass meine "Format" -Einstellungen auf en_DE gesetzt waren. Gelöschte das auch, neu gestartet, jetzt funktioniert alles wie erwartet.