Terminal.app 字符集发生更改 - 完全无法辨认

Terminal.app 字符集发生更改 - 完全无法辨认

我刚刚ssh进入我的服务器(Ubuntu 10.04.2),然后运行aptitude(以交互模式)。一旦我按下一个键(我相信是其中一个字母g),它就会变成这样(不仅仅是 SSH 会话;在我终止会话后,这种行为仍然继续ssh):

第一学期

第 2 学期

我可以重新连接并且一切都会正常,但是当我aptitude再次运行时,同样的问题会出现(但奇怪的是,它被限制在内aptitude)。

有人知道会发生什么吗?如果有帮助的话,我正在screen使用byobu配置文件运行,我$TERM的是screen-bce,我Terminal.app在 10.6.7 上使用。

答案1

您可以使用该命令reset恢复正常终端。

至于为什么会发生这种情况 - 不知何故,您的终端获取的是二进制数据而不是 ASCII。

答案2

我意识到这个帖子已经有一年了,但由于我自己在使用“cat”显示 Apple 的 Terminal.app 中可执行文件的内容后也遇到了这个问题,所以我认为这种情况也可能会影响未来的用户。

无论如何,据我所知,奇怪的字符出现在打印 ASCII“移出”字符(十进制 14,0x0E)之后。(好吧,“打印”这个词可能不合适,因为至少对于 Terminal.app 来说,这不是一个可打印的字符,但我希望您明白我的意思。)幸运的是,如果打印 ASCII“移入”字符(十进制 15,0x0F),终端就会恢复正常。

换句话说,如果有人编写了如下 C 程序...

#include <stdio.h>
int main() {
   printf( "\x0F" );
   return 0;
}

它应该会让一切恢复正常。在其他语言中或在 bash shell 中可能还有更简单的方法,但希望您能明白我的意思。

显然,这种奇怪的行为不是一个错误,而是一个晦涩难懂的功能(至少对我来说)。当我搜索信息时,我被引导到 ISO 2022,这似乎是终端所做事情的基础。以下是维基百科上有关 ISO/IEC 2022 的文章

我希望这篇文章对大家有所帮助,因为这些奇怪人物背后的秘密已经解开了。

答案3

菜单项

终端 > Shell > 发送重置

将终端状态重置为默认值,包括字符集,以解决此特定问题。

相关内容