【问题标题】:MinTTY Unicode Support and Build ErrorMinTTY Unicode 支持和构建错误
【发布时间】:2011-09-17 22:35:46
【问题描述】:

我正在尝试将MinTTYMSYS(从here 下载)一起使用,我注意到它似乎不支持Unicode。

即:

  1. 我无法将 Unicode 文本粘贴到其中(结果是垃圾)。

  2. 如果我将 Unicode 文件 cat 发送到终端(无论是 UTF-8 还是 UTF-16),我会返回垃圾。

  3. 如果我使用 ls 并且文件 name 是 Unicode,它会打印出垃圾。将结果传送到文件没有有帮助 - 即使在支持 Unicode 的文本编辑器中查看时,它仍然是垃圾。

  4. 我无法弄清楚设置中的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. 是否有可能以某种方式在 MSYS/MinTTY 中获得 Unicode 支持(这似乎是 both 的问题)?

  2. 如果不是,那么我从哪里获得所有这些文件,例如charset.d,以及如何为 MSYS 构建 MinTTY?

【问题讨论】:

    标签: unicode msys build-error mintty


    【解决方案1】:

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

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

    此外,MSYS bash 设置为将每个字符的最高位解释为元标志,因此默认情况下它无法处理 ASCII 以外的任何内容。要更改它,请将以下内容放入~/.inputrc

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

    要获得完整的 Unicode 支持(开箱即用),您需要使用 Cygwin 1.7 而不是 Cygwin 1.3 fork 即 MSYS。

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

    【讨论】:

    • 感谢您的回答!一些cmets:(1)更改元位仍然没有正确打印任何东西——即使我也将编码更改为UTF-8。 (2)我很困惑你为什么提到 Cygwin;我是用 MSYS 还是用 Cygwin 构建它?
    • 如我所说,MSYS 不支持 UTF-8。因此,在 mintty 选项中启用它没有什么意义,除非您主要使用它来 ssh 到支持它的系统。我提到 Cygwin 是因为 MSYS 是修改后的 Cygwin 1.3(十年前),它不支持 UTF-8,而现代 Cygwin (1.7) 支持。换句话说:如果您需要支持 UTF-8 的 POSIX 层,请使用 Cygwin。 MSYS mintty 确实需要在 MSYS 下构建。
    • 哦,我明白了……真可惜 MSYS 不支持 Unicode。感谢您的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2020-07-27
    • 2014-04-19
    • 2021-12-09
    相关资源
    最近更新 更多