linux 终端编码,使用命令切换终端的编码

本文介绍了在无法更改远程SSH服务器编码的情况下,如何通过在本地终端使用luit、修改locale配置、调整GnomeTerminal的gconf设置、操作Konsole的dbus以及在xterm上使用控制序列来切换字符编码,从而在连接远程服务器时确保正确显示非UTF-8编码的字符。
摘要由CSDN通过智能技术生成

问题描述

我经常使用ssh的其中一台服务器使用西方编码而不是utf-8(而且我无法更改它)。

我已经开始编写bash脚本以连接到该服务器,因此不必每次都键入整个地址,但是我想改进此脚本,以便它也可以正确更改终端窗口的编码。

我需要做的更改可以通过使用鼠标导航到”Terminal”->”Set字符编码… “->”Western(ISO-8859-1)“来执行。对于当前的终端窗口/屏幕,是否存在执行相同操作的终端命令?

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

最佳办法

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

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

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

次佳办法

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

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

希望能奏效

第三种办法

Gnome Terminal使用gconf来存储设置。这些可以使用gconftool进行操作,因此,您可以使用:

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

我已经在12.04上对此进行了测试。由于某些原因,菜单("Terminal"->"Set Character Encoding...")似乎没有实时更新,但是实际的字符编码确实可以正确更新。

第四种办法

我不知道如何进行测试,但是使用Kubuntu上的Konsole可以执行以下操作:

1)查找注册到dbus的应用程序

$ qdbus

我使用konsole,所以简单的qdbus | grep kons就给我org.kde.konsole

2)在Konsole中查找当前会话

$ qdbus org.kde.konsole | grep Sessions

/Sessions

/Sessions/1

$ set | grep -i sessions

KONSOLE_DBUS_SESSION=/Sessions/1

3)找到有用的方法

$ qdbus org.kde.konsole /Sessions/1 | grep -i codec

method QByteArray org.kde.konsole.Session.codec()

method bool org.kde.konsole.Session.setCodec(QByteArray codec)

4)检查当前编码

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec

UTF-8

5)设置编码

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.setCodec ISO-8859-1

true

6)检查当前编码

$ qdbus org.kde.konsole /Sessions/1 org.kde.konsole.Session.codec

ISO-8859-1

Ubuntu将有一个类似的终端程序,但是您必须使用正确的服务名,路径,方法和参数来使自己困惑。

第五种办法

在xterm上,使用control sequences更改编码。例如,在bash中,您可以通过运行以下命令获取UTF-8字符集:

echo -n $'\e%G'

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

echo -n $'\e%@'

参考资料

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值