ssh i kodowanie znaków

17

Kiedy korzystam sshz mojego VPS, mam irssiuruchomiony na ekranie. Gdy ktoś wysyła znak Unicode (taki jak © lub €), irssiwyświetla śmieci, gdy używam go za pośrednictwem ekranu w sshsesji. Jeśli połączę się z tym irssiza pomocą modułu proxy irssi, z irssi działającego na moim komputerze lokalnym, pokaże się poprawnie.

Podobnie, jeśli uruchomię ghci na moim VPS (poza ekranem) i wprowadzę jedną z tych postaci, nastąpi awaria.

Więc oczywiście istnieje problem z kodowaniem znaków w moim połączeniu z moim VPS, albo w ssh, albo w konfiguracji systemu.

Jak mogę dowiedzieć się, co to powoduje, i rozwiązać problem?

Detale:

System klienta

  • Arch Linux x64
  • Kodowanie UTF-8

System VPS

  • Ubuntu Server 10.04
  • Użyto nieznanego kodowania. Jak to znaleźć? (Muszę tylko poszukać w moim /etc/rc.conf Archa)
Macha
źródło

Odpowiedzi:

19

Uruchomienie localepolecenia spowoduje wyświetlenie informacji o ustawieniach regionalnych; kodowanie znaków jest określone przez LC_CTYPEustawienie.

W Ubuntu domyślne ustawienia regionalne są podane w /etc/default/locale. Możesz zmienić kodowanie znaków, ustawiając LC_CTYPEna swoim ~/.profileVPS, np

export LC_CTYPE=en_US.UTF-8

Musisz upewnić się, że en_US.UTF-8ustawienia regionalne są dostępne. Ubuntu generuje dane regionalne tylko dla żądanych ustawień regionalnych. Wszystkie lokalizacje w języku angielskim powinny być dostępne, jeśli masz language-pack-en-basezainstalowany pakiet . Możesz ręcznie poprosić o ich wygenerowanie za pomocą

sudo locale-gen en

Możesz także dodać wpisy, aby /var/lib/locales/supported.d/localupewnić się, że określone ustawienia regionalne są zainstalowane (np. Dodać wiersz en_US.UTF-8 UTF-8).

Gilles „SO- przestań być zły”
źródło
4

w rzeczywistości wartość podana w LC_CTYPE jest nazwą ustawień regionalnych . Zwyczajowe, ale nie wymagane, aby kodowanie zestawu znaków było w nazwie.

Ale jeśli na pewno chcesz poznać zestaw znaków, to polecenie jest locale -k charmap.

~$ LC_CTYPE=C locale -k charmap
charmap="ANSI_X3.4-1968"
~$ LC_CTYPE=fr_BE locale -k charmap
charmap="ISO-8859-1"

(zwróć uwagę, jak zestaw znaków nie pojawia się w wartościach LC_TYPE powyżej).

Pablo Saratxaga
źródło