W niektórych programach, takich jak htop
linie i ramki, nie są wyświetlane poprawnie. Zamiast tego są wyświetlane jako -
i /
.
Ale na innym komputerze są one wyświetlane poprawnie jako odpowiednie linie:
Nie jestem pewien, czy jest to problem z terminalem, czy może jakiś pakiet jest potrzebny.
W przypadku, gdy jest to istotne: Mój system to Debian Wheezy, moim tłumaczem jest, bash
a emulatorem terminala jestgnome-terminal
terminal
character-encoding
Martin Vegter
źródło
źródło
htop
wyświetlanie znaków ASCII. Jeśli jednak domyślną czcionką terminala jest inna niż Unicode, kodowanie jest również prawdopodobne, więc dodałem to do mojej odpowiedzi.Odpowiedzi:
Twój najlepszy przykład działa z ustawieniami narodowymi innymi niż Unicode (tj. ASCII). Sprawdź swoją zmienną środowiskową $ LANG (spróbuj
export | grep LANG
); najprawdopodobniej nie znajdziesz.UTF-8
przyrostka. Spróbuj dodać:Twój drugi przykład działa z ustawieniami regionalnymi UTF-8, które powinny być domyślne dla najnowszych powłok. Wygląda na to, że
htop
wykrywa twoje ustawienia regionalne i wyświetla znaki ASCII lub Unicode - więc na dolnym obrazku otrzymujesz ładne znaki Unicode, podczas gdy z ASCII dostajesz całkiem prowizoryczne. Sugeruję zmianę ustawień regionalnych górnego obrazu komputera na Unicode (zobacz Ustawienia regionalne - Wiki Debiana ).Jeśli to nie zadziała, przyczyną może być emulator terminala . Domyślne kodowanie może być inne niż Unicode. Zmień domyślne kodowanie emulatora terminala na UTF-8 (w
xfce4-terminal
I znalazłem to w zakładce Zaawansowane). Jeśli nie możesz, być może twoja obecna czcionka nie obsługuje Unicode: spróbuj zmienić czcionkę na Unicode.[O dziwo, stwierdziłem, że kiedy zmieniłem ustawienia regionalne na ASCII raz w sesji powłoki,
htop
zawsze wyświetla znaki ASCII, nawet po ich ponownym przywróceniu. To może być twój problem, jeśli z jakiegoś powodu od czasu do czasu zmieniasz ustawienia regionalne w swojej powłoce.]źródło
Dziwne jest to, że
htop
używa ncurses, które mogą rysować linie z / bez Unicode. Jednak patrząc na kod źródłowy wCRT.c
pokazuje wyjaśnienie:a
CRT_treeStrUtf8
wartość toJednak ncurses (dowolna implementacja curses) ma przenośne symbole dla tych, które nie zależą od tego, czy kodowanie to UTF-8, czy nie. Niektóre aplikacje (takie jak okna „s
--ascii-lines
opcja) stanowią opcję dla używając ASCII do rysowania, ale wniosek, że nawet nie spróbuje użyć wiersza rysunku przedstawione w ncurses nie jest efektywne wykorzystanie biblioteki.Krótko mówiąc, kiedy natkniesz się na taki program, powinieneś zgłosić go jako błąd programistom.
Dalsza lektura:
border
,wborder
,box
,hline
,whline
,vline
,wvline
,mvhline
,mvwhline
,mvvline
,mvwvline
- tworzenie curses granice, linie pionowe i poziomedialog
zrzuty ekranu ( żadne nie wymaga kodowania UTF-8, aby korzystać z rysowania linii)źródło
LANG
/LC_ALL
włączenie oczekiwanych znaków rysowania linii w Unicodehtop
), jest to bardzo interesujące. Dziękujemy za poświęcenie czasu na wyjaśnienie tego!