Niezbyt często używam pl-znaków w konsoli łącząc się po SSH, ale jest parę miejsc, gdzie ich potrzebuję. Po dłuższym czasie zauważyłem, że na nowym komputerze mam problem z pl-znakami. Występował tylko przy połączeniu się z tego macOS przy pomocy SSH do Linuksa. Nic krytycznego, bo w zasadzie nie potrzebuję się tam łączyć z macOS, z innych Linuksów działało, ale byłoby miło, gdyby działało wszędzie. W końcu znalazłem chwilę i postanowiłem się zająć sprawą.
Krótko o środowisku: na workstacji macOS Ventura 13.4 z zsh 5.9 oraz iTerm2 3.4.19. Dla pamięci opis sprawdzania ustawień krok po kroku.
ustawienia iTerm
Upewniamy się, że iTerm korzysta z kodowania UTF-8. W tym celu należy wybrać
settings -> profiles -> terminal
Upewniamy się, że character encoding jest ustawione na UTF-8.
zmienne środowiskowe
Sprawdzamy ustawienia zmiennych środowiskowych na macOS. W tym celu należy wpisać
echo $LANG
i sprawdzić wartość zmiennej LANG
. Powinna być jakaś z UTF-8
, na przykład pl_PL.UTF-8
.
Jeśli jest inaczej, można dopisać odpowiednią wartość w pliku .zshrc[1]
export LANG=pl_PL.UTF-8
Jeśli wykonujemy zmianę, należy uruchomić nowy terminal, aby została zastosowana.
kodowanie w powłoce
Sprawdzamy na macOS, jakie kodowanie mamy ustawione w terminalu. Wpisujemy locale
i weryfikujemy zawartość zmiennych LC_CTYPE
oraz LANG
. Powinny zawierać kodowanie UTF-8. Jeśli tak nie jest, można ustawić odpowiednie zmienne w sposób opisany w poprzedniem akapicie.
ustawienia systemu zdalnego
Należy sprawdzić, czy na serwerze zdalnym locale ustawione są na wersję z UTF-8. W tym celu wpisujemy locale
. Jeśli tak nie jest, to w Debianie i Ubuntu polecenie dpkg-reconfigure locales
umożliwi zarówno wygenerowanie odpowiednich locali, jak i ustawienie domyślnych.
Przy powyższych ustawieniach pl-znaki powinny wyświetlać się poprawnie.
Dla zupełnej transparentności: tym razem nie ma odnośników do stron, których używałem przy rozwiązywaniu problemu. Posiłkowałem się bowiem chatGPT z niewyszukanym promptem macos problem utf-8 iterm how to solve. Całkiem sprawnie sobie poradził.
[1] Jeżeli z jakiegoś powodu korzytamy z bash, nie zsh, to właściwym plikiem będzie .bash_profile