使用命令切换终端编码

Tom*_*han 26 ssh command-line remote-access encoding

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

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

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

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

tör*_*kus 22

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

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

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

  • 这是对的。然而,我来到这里是为了从 luit 的手册页中寻找这一点:“Luit 通常由终端模拟器透明地调用。” 因此,对于那些因为在终端中收到错误编码而到达这里的人,修复它的正常方法是通过终端模拟器更改编码。 (2认同)

and*_*ing 5

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

gconftool --set --type=string /apps/gnome-terminal/profiles/Default/encoding ISO-8859-1
Run Code Online (Sandbox Code Playgroud)

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

  • 但这会更改所有终端的默认编码,而不仅仅是运行 ssh 连接脚本的终端。 (2认同)