Próbuję dowiedzieć się, jak $LANGzachowuje się zmienna z gnome-terminalem (i opcją preferencji kodowania znaków). Używam iso8859-1 (latin1) jako mojego głównego zestawu znaków i wszystkie moje nazwy plików są zakodowane jako takie.
Dla następujących testów zrobię ls -lkatalog z hiszpańskimi znakami akcentowanymi w nazwach plików:
Przypadek 1:
- terminal gnome skonfigurowany dla ISO-8859-1
LANGustawiono na „en_US-iso8859-1”- Wynik: poprawnie widzę wszystkie pliki
Przypadek nr 2:
- terminal gnome skonfigurowany dla UTF-8
LANGustawiono na „en_US-iso8859-1”- Wynik: widzę śmieciowe znaki dla wszystkich hiszpańskich znaków. Jest to oczekiwane, ponieważ zmieniłem kodowanie znaków dla terminala
Przypadek nr 3:
- terminal gnome skonfigurowany dla ISO-8859-1
LANGustawiono na „en_US-UTF-8”- Wynik: widzę śmieciowe znaki dla wszystkich hiszpańskich znaków.
Dlaczego w tym ostatnim przypadku widzę zniekształcone postacie? Czy wyjście ls nie powinno wysyłać nazw plików prosto do terminala gnome? A ponieważ terminal gnome jest skonfigurowany dla ISO-8859-1, oczekiwałbym, że będą wyglądać dobrze.
Przez chwilę myślałem, że być może bash rozważa moją $LANGzmienną i dokonuje konwersji. Potem zmieniłem terminal na UTF-8, ale nadal nie widzę poprawnie znaków. Nawet potokowałem wyjście ls do xxd i ku mojemu zdziwieniu wciąż widzę pliki zakodowane takimi, jakie są: ISO-8859-1.
Podsumowując: Jeśli mój wpis zawiera znaki ISO-8859-1, a emulator terminala jest skonfigurowany do tego samego kodowania znaków: Kto dokonuje konwersji, jeśli LANGjest inaczej?
Dzięki za wszelką pomoc, którą możesz udzielić.
Craconia