ssh 和字符编码

ssh 和字符编码

当我ssh进入我的 VPS 时,我irssi在屏幕上运行。当有人发送 unicode 字符(例如 © 或 €)时,irssi当我在会话中通过屏幕使用它时,会显示垃圾ssh。如果我irssi使用 irssi 的代理模块从本地计算机上运行的 irssi 连接到该模块,它会正确显示。

同样,如果我在 VPS(屏幕外)上运行 ghci 并输入这些字符之一,它就会崩溃。

因此,显然,我与 VPS 的连接存在某种字符编码问题,无论是在 ssh 还是系统设置中。

我怎样才能找出造成这种情况的原因并解决它?

细节:

客户端系统

  • Arch Linux x64
  • UTF-8编码

VPS系统

  • Ubuntu服务器10.04
  • 使用未知编码。我如何找到这个? (我只需要在 /etc/rc.conf 中查找 Arch)

答案1

运行该locale命令将为您提供有关区域设置的信息;字符编码由设置给出LC_CTYPE

在 Ubuntu 下,默认区域设置在 中给出/etc/default/locale。您可以通过LC_CTYPE~/.profileVPS 上设置来更改字符编码,例如

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)。

答案2

实际上 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 值中)。

相关内容