如何获得重音字母才真正在bash上工作?

Fer*_*isi 31 bash cygwin non-ascii-characters

我在cygwin上的bash安装没有正确处理重音字母.我尝试添加

set input-meta on    # to accept 8-bit characters
set output-meta on   # to show 8-bit characters
set convert-meta on  # to show it as character, not the octal representation
Run Code Online (Sandbox Code Playgroud)

我的输入rc,但这还不太有用.的确,如果我输入

$ echo ù
Run Code Online (Sandbox Code Playgroud)

然后在我按下输入之前它会自动更改为

$ echo \303
Run Code Online (Sandbox Code Playgroud)

虽然输出是正确的,但我得到了

$ echo \303
ù
Run Code Online (Sandbox Code Playgroud)

对于任何其他重音字母,我得到相同的结果.通常虽然我使用的是非意大利语键盘,但我使用autohotkey带有重音字母的撇号替换字母.在这种情况下,重音字母被替换为a \302,并且根据字母打印垃圾:打印a 3y表示a ù,a ¢表示an ò,而不打印其他内容.

我怎样才能让这一切变得有意义?

编辑:我的语言环境设置,cygwin版本和终端如下

$ uname -a
CYGWIN_NT-6.1-WOW64 ferdi-Asus 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_ALL=
$ tty
/dev/pty1
Run Code Online (Sandbox Code Playgroud)

我只需单击Cygwin终端链接即可调用它.它重定向到

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -
Run Code Online (Sandbox Code Playgroud)

autohotkey脚本的相关部分如下

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
...
::avra'::avrà
::avro'::avrò
...
Run Code Online (Sandbox Code Playgroud)

Rub*_*zzo 15

只需执行以下Cygwin操作Mintty 1.1.2即可在bash上获得重音字母:

  1. 转到菜单(如果您没有看到任何菜单,请右键单击您的终端).
  2. 点击选项....
  3. 单击文本.
  4. 区域设置更改为C.
  5. 字符集更改为ISO-8859-1 (Western European).

在Mintty 1.1.2中更改区域设置和字符集

然后测试一下:

回应Mintty 1.1.2中的重音字母