我正在使用 redhat-linux 终端通过“telnet”连接到路由器设备。
设备启动时,打印出来的字符乱码如下:
在终端中,如果我单击菜单“终端”-->“重置”,那么它就会更改为正确的字母顺序。
有没有什么方法可以预防它?
我尝试从菜单选项中将终端的编码设置为 UTF-8。但问题仍然存在。
答案1
您说的是当设备正在启动时会发生此输出,对吗?
从输出来看,您的终端似乎正在接收一个CTRL-N序列,也称为移出(所以)字符,将你的字符集翻转为备用字符集 (G1)。这就是为什么终端重置可以恢复可读性的原因。(几年后……您将能够阅读那些乱码!)您应该能够切换回默认字符集(G0)通过发送CTRL- O(哦,不是零)(移入(国际单位制))。
echo ^V^O # or something similar would suffice.
还有其他可能性,但可能性较小,参见这里对发生的事情以及如何在不失控的情况下恢复原状进行适当的描述。
基本上,你的路由器正在发送所以字符,可能不是故意的,但可能是在启动过程中作为线路噪音或垃圾。({耸肩}可能是故意的,为了扰乱输出以阻止旁观者......但可能不是)
我正在寻找一种解决方案来防止转向 Alt-CharSet...我会回来的......
编辑:
vt100终端参考展示如何重新定义替代字符集(G1)为几个可能集合之一,也许我们可以设置G1(所以)设置为与 G0 相同(国际单位制) 放?
echo -e "\e(B" # sets G0 to USASCII
echo -e "\e)B" # sets G1 to USASCII (default is "\e)0" (zero))
或者,作为一个命令:
echo -e "\e(B\e)B"
这应该从那时起,将 G1 字符集重置为可读字母。当然,这会阻碍任何绘制酷炫线条图形的尝试。真扫兴。但是……它会起作用。
alias telnet-router='echo -en "\e(B\e)B"; telnet mr_router; echo -en "\e(B\e)0"'
设置 G0/G1,调用 telnet,将 G0/G1 再次设置为默认值。
当然,你也可以简单地不是查看启动输出,从而完全避开问题......别往那边看!