2011-06-18 76 views
0

我试图使用MinTTYMSYS(从here下载),我注意到它似乎没有Unicode支持。MinTTY Unicode支持和生成错误

即:

  1. 我不能粘贴Unicode文本到它(事实证明,垃圾)。

  2. 如果我向终端发送一个Unicode文件(不管是UTF-8还是UTF-16),我都会返回垃圾。

  3. 如果我使用ls和文件名称是Unicode,它会打印出垃圾。将结果管理到文件不是帮助 - 它是仍然垃圾即使在具有Unicode支持的文本编辑器中查看。

  4. 我无法弄清楚在seettings中的UTF-8设置是如何工作的。它似乎没有改变任何东西。

  5. 当我尝试下载源,并建立它,我得到建立,我解决不了的错误:

    Makefile:117: charset.d: No such file or directory 
    Makefile:117: child.d: No such file or directory 
    Makefile:117: config.d: No such file or directory 
    Makefile:117: ctrls.d: No such file or directory 
    Makefile:117: minibidi.d: No such file or directory 
    Makefile:117: std.d: No such file or directory 
    Makefile:117: term.d: No such file or directory 
    Makefile:117: termclip.d: No such file or directory 
    Makefile:117: termline.d: No such file or directory 
    Makefile:117: termmouse.d: No such file or directory 
    Makefile:117: termout.d: No such file or directory 
    Makefile:117: winclip.d: No such file or directory 
    Makefile:117: winctrls.d: No such file or directory 
    Makefile:117: windialog.d: No such file or directory 
    Makefile:117: wininput.d: No such file or directory 
    Makefile:117: winmain.d: No such file or directory 
    Makefile:117: winprint.d: No such file or directory 
    Makefile:117: wintext.d: No such file or directory 
    Makefile:117: wintip.d: No such file or directory 
    Makefile:117: xcwidth.d: No such file or directory 
    Makefile:117: res.d: No such file or directory 
    windres --preprocessor 'gcc -E -xc-header -DRC_INVOKED -MMD -MP 'res.rc res.o 
    gcc xcwidth.c -c -MMD -MP -include std.h -std=gnu99 -Wall -Wextra -Werror 
        -Wundef -march=i586 -mtune=pentium-m -DNDEBUG -fomit-frame-pointer -Os 
    In file included from <command-line>:0:0: 
    ./std.h:4:28: fatal error: cygwin/version.h: No such file or directory 
    compilation terminated. 
    make: *** [xcwidth.d] Error 1 
    

问题:

  1. 是否有可能以某种方式得到Unicode支持MSYS/MinTTY(这似乎是)的问题?

  2. 如果不是,那么我在哪里可以获得像charset.d这样的所有文件,以及如何构建用于MSYS的MinTTY?

回答

3

Mintty支持UTF-8。您可以在其选项的文本页面上启用它。

虽然MSYS确实不支持它。相反,它使用系统的“ANSI”代码页,例如CP1252在美国和西欧的系统。因此,这也是MSYS的默认设置。

此外,MSYS bash的设置使得它将每个字符的最高位解释为元标志,因此默认情况下它不能处理除ASCII之外的任何内容。要改变这种状况,把下列~/.inputrc

set input-meta on 
set output-meta on 
set convert-meta off 

对于完全支持Unicode(外的开箱),您需要使用Cygwin 1.7,而不是在Cygwin 1.3叉是MSYS的。

MSYS mintty需要使用gcc的MSYS版本构建而不是MinGW,因为它需要MinGW不提供的POSIX功能。使用mingw-get install msys-gcc msys-make安装它们,并在运行时将MSYS可执行文件粘贴在路径的前端:PATH=/bin:$PATH make

+0

感谢您的回答!几点意见:(1)即使我也将编码更改为UTF-8,更改元位仍然没有正确打印任何内容。(2)我很困惑你为什么提到Cygwin;我是用MSYS还是用Cygwin构建它? – Mehrdad

+0

正如我所说的,MSYS不支持UTF-8。因此,在mintty选项中启用它,除非您主要将其用于支持ssh的系统。我提到了Cygwin,因为MSYS是一个修改过的Cygwin 1.3(从十年前开始),它不支持UTF-8,而现代Cygwin(1.7)确实如此。换句话说:如果您需要支持UTF-8的POSIX层,请使用Cygwin。 MSYS mintty确实需要在MSYS下建立。 – ak2

+0

哦,我看到了...这是一个无赖MSYS不支持Unicode。谢谢(你的)信息。 – Mehrdad