如何在Bash中修复字符编码(Arch Linux)


8

我在bash中使用德国变音符号编码时遇到一些问题。它通常工作正常,但是当我键入无效命令时,bash生成的错误消息包含奇怪的转义序列,而不是实际字符。

这是显示问题的日志:

[root@myhost ~]# mkdir ä
[root@myhost ~]# ä
-bash: $'\303\244': Kommando nicht gefunden.
[root@myhost ~]# ü
-bash: $'\303\274': Kommando nicht gefunden.
[root@myhost ~]# ls
ä  äöü  Projects  tbb
[root@myhost ~]# cat äöü
äüö
[root@myhost ~]# rm ä
rm: Entfernen von „ä“ nicht möglich: Ist ein Verzeichnis
[root@myhost ~]# rmdir ä
[root@myhost ~]# rm äöü

我的配置/etc/rc.conf

LOCALE="de_DE.UTF-8"
DAEMON_LOCALE="no"
HARDWARECLOCK="localtime"
TIMEZONE="Europe/Berlin"
KEYMAP="de-latin1"
CONSOLEFONT=
CONSOLEMAP=
USECOLOR="yes"

/etc/locale.gen 仅包含de_DE语言环境:

de_DE.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE@euro ISO-8859-15

locale 输出:

LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

您正在使用哪种终端仿真器?
Roman B.

@RomanB:腻子,但是如果在本地使用裸壳,问题也是一样的,因此这是一个bash问题。
smerlin

@smerlin,没有“原始外壳”,您是说控制台,gnome-terminal,urxvt,xterm还是其他?如果使用控制台,如果尝试“ export TERM = linux”会怎样?
亚历山大(Alexander)

@亚历山大相同:$ ö bash: $'\303\266': command not found
罗曼·B。

Answers:


1

这似乎是在bash 4.2中引入的。您可以将此错误报告给bash开发人员。


我同意。它将unicode字符拆分为其组成字节,因此关闭了Unicode处理。
jpaugh 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.