当我错误地输入“ñ”(期望输入任何命令)然后将其删除并输入正确的字母时,输出会返回带有特殊字符的命令�
,显然 shell 无法识别该命令,我必须重新输入小心不要再次输入“ñ”字符。
例如
Wrong typing @tachomi:~$ ñs
Correct typing @tachomi:~$ ls
Output �ls: command not found
- 为什么会出现这种情况,因为我删除了错误的字符?
- 我该如何解决这个问题?
我认为这种字符ñ , '
等与外壳不兼容,这是“内存”保留它无法识别的东西的原因,但我想确定为什么会发生这种情况。
我正在使用 bash shell
答案1
您有一个能够理解多字节编码(可能是 UTF-8)的终端(或终端仿真器),但 shell 却不能。尝试将环境变量设置LANG
为C.UTF-8
.或者跑去locale -a
找另一个可能的值来尝试。
答案2
由于所有的帮助,我可以找到如何解决这个问题。
主要问题是由于 UTF-8 编码造成的,服务器没有按照注释中所述进行配置。
引用评论:
[@Rmano]:中UTF-8
,ñ
是一个两个字节字符
[@jimmij]:由于某种原因,退格符只能删除其中一个
[@aecolley]:尝试将环境变量设置LANG
为C.UTF-8
其固定如下:
Find your current LANG $ locale -v | grep 'LANG='
Output LANG=en_US
Change $ sudo LANG=en_US.UTF-8
or
Change $ sudo vim /etc/default/locale
Edit ~LANG="en_US.UTF-8"
重新启动您的终端会话。
答案3
您可以运行以下代码行:
if [[$(locale -v | grep 'LANG=') != *.UTF-8]]; then sudo $(locale -v | grep 'LANG=').UTF-8; fi
如果字符代码尚不存在UTF-8
,则将字符代码设置为UTF-8
当前字符代码的版本。这样,shell 将理解 UTF-8 字符,并正确地退格它们。