使用命令切换终端的编码

使用命令切换终端的编码

我经常使用的服务器之一ssh使用西方编码而不是 utf-8(而且我无法改变这一点)。

我已经开始编写一个 bash 脚本来连接到该服务器,这样我就不必每次都输入整个地址,但我想改进这个脚本,以便它也能正确地更改终端窗口的编码。

我需要做的更改可以通过使用鼠标导航到“终端”->“设置字符编码...”->“西方(ISO-8859-1)”来执行。是否有针对当前终端窗口/屏幕执行相同操作的终端命令?

澄清:
我是不是对在远程站点上切换系统区域设置的方法感兴趣 - 该系统由其他人管理,我不知道那里的什么东西可能依赖于 latin-1 编码。我想要做的是让我这边的这个终端窗口将字符编码切换为上面提到的,就像我使用鼠标和菜单所做的那样。

答案1

您正在寻找luit专为此目的而设计的:

$ luit -encoding ISO-8859-1 ssh remote.host

它会将 ssh 命令的输出转换为 UTF-8,因此您不需要更改终端的编码。

答案2

Gnome 终端使用 gconf 来存储设置。这些设置可以通过gconftool以下方式进行操作:

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1

我在 12.04 上测试过。出于某种原因,菜单 ( "Terminal"->"Set Character Encoding...") 似乎没有实时更新,但实际的字符编码确实可以正确更新。

答案3

首先在您最喜欢的编辑器中编辑当前语言环境

sudo gedit /var/lib/locales/supported.d/local类似于

en_GB.UTF-8 UTF-8
en_US.UTF-8 UTF-8
en_GB.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1

然后运行sudo dpkg-reconfigure locales

然后使用以下方式设置终端LANG=en_GB.ISO-8859-1

希望有效

答案4

打开xterm,使用更改编码控制序列。例如,bash您可以通过运行以下命令获取 UTF-8 字符集:

echo -n $'\e%G'

可以通过运行以下命令访问 ISO 8859-1 编码:

echo -n $'\e%@'

相关内容