ssh和字符编码


16

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

同样,如果我在VPS(屏幕外)上运行ghci并输入其中一个字符,则会崩溃。

因此,很明显,在ssh或系统设置程序中,我与VPS的连接存在某种字符编码问题。

我如何找出造成这种情况的原因并加以解决?

细节:

客户系统

  • Arch Linux x64
  • UTF-8编码

VPS系统

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

Answers:


18

运行该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确保已安装特定的语言环境(例如,添加line en_US.UTF-8 UTF-8)。


3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.