ssh и кодировка символов

Когда я вхожу в мой VPS, у меня работает irssi на экране. Когда кто-то отправляет символ юникода (например, © или €), irssi отображает мусор, когда я использую его через экран в сеансе ssh . Если я подключусь к этому irssi используя прокси-модуль irssi, от irssi, запущенного на моем локальном компьютере, он отображается правильно.

Аналогично, если я запускаю ghci на своем VPS (вне экрана) и вхожу в один из этих символов, он сбой.

Итак, очевидно, что есть некоторая проблема кодирования символов с моим подключением к моему VPS, либо в ssh, либо в настройке системы.

Как я могу узнать, что вызывает это, и решить его?

Детали:

Клиентская система

  • Arch Linux x64
  • Кодировка UTF-8

Система VPS

  • Сервер Ubuntu 10.04
  • Используется неизвестная кодировка. Как мне это найти? (Мне просто нужно посмотреть в моем /etc/rc.conf для Arch)

  • пересылать весь трафик mysql в туннель ssh
  • Копирование файлов через два слоя SSH из Windows
  • Почему Bash не удалось найти команду, даже если $ PATH указан правильно?
  • Временное управление оболочкой
  • Запустить тот же скрипт на нескольких серверах через SSH
  • Запуск приложения через SSH с помощью DISPLAY, когда пользователь не вошел в систему
  • Можно ли настроить auth.log о том, какой ключ был использован?
  • ssh + nohup не работает
  • 2 Solutions collect form web for “ssh и кодировка символов”

    Запуск команды locale даст вам информацию о ваших настройках локали; кодировка символов задается установкой LC_CTYPE .

    В Ubuntu настройки локали по умолчанию задаются в /etc/default/locale . Вы можете изменить кодировку символов, установив LC_CTYPE в свой файл ~/.profile на VPS, например

     export LC_CTYPE=en_US.UTF-8 

    Вы должны убедиться, что en_US.UTF-8 доступна. Ubuntu генерирует только локальные данные для запрошенных локалей. Все английские локали должны быть доступны, если у вас установлен пакет language-pack-en-base . Вы можете вручную запросить свое поколение с помощью

     sudo locale-gen en 

    Вы также можете добавить записи в /var/lib/locales/supported.d/local чтобы убедиться, что определен определенный языковой стандарт (например, добавьте строку en_US.UTF-8 UTF-8 ).

    в действительности значение, указанное в LC_CTYPE, является именем локали. Обычно, но не требуется, что кодировка кодировки должна быть в имени.

    Но если вы хотите, конечно, знать кодировку, тогда команда 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" 

    (обратите внимание, как кодировка не отображается в значениях LC_TYPE выше).

    Linux и Unix - лучшая ОС в мире.