ssh backspace 删除一个字符而不是两个(utf-8 符号)

ssh backspace 删除一个字符而不是两个(utf-8 符号)

我正在使用 ssh 访问远程计算机并运行 bash 命令以使用标准输入流输入符号:

读取测试;回显 $test

输入英文字母并使用退格键删除它们,然后输入其他字符并重复此步骤任意次是可以的。但是当我使用其他 utf-8 符号时,情况就变得很糟糕,例如俄语符号,它们需要 2 个字节,而不是像英语符号那样需要 1 个字节。例如,我输入:

藝術本身

之后,我使用退格键8次,并输入其他符号:

提供

然后按下 Enter 键。但是,我得到的结果不是与上次输入相等的结果,而是以下内容:

简报

这意味着 8 个退格键只删除了 4 个符号。

我确实使用 linux ubuntu 12.04。尝试了不同的控制台:标准控制台、终结器;不同类型的退格选项(如 ASCII-del 或 Ctrl+H);将 $LC_TYPE 设置为 ru_RU.UTF-8,但没有任何效果。使用本地控制台不会出现这样的问题。提前谢谢您。

更新:我还有一个关于这个问题的视频,请在 YouTube 上观看

答案1

您可以通过运行来解决这个问题

stty iutf8

每次你 ssh 到服务器上时。不幸的是,这个错误自 2005 年起就存在了,不过要注意Debian 论坛了解详情。您可能还想在 .bashrc 文件末尾添加此行。

答案2

您需要设置LC_CTYPE为 UTF-8 语言环境,例如ru_RU.UTF-8en_US.UTF-8。您可以使用 列出可用的语言环境locale -a

相关内容