Cygwin Cygpath和重音(à;è;ì;ò;ù;)

Cygwin Cygpath和重音(à;è;ì;ò;ù;),cygwin,cygpath,Cygwin,Cygpath,cygpath似乎无法正确处理带有重音符号的路径,例如 C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\àòè\foo2" 印刷品 /usr/bin/"C:/foo/àòè/foo2" 鉴于我期望: /cygdrive/c/foo/àòè/foo2 没有重音符号的相同路径会产生预期结果: C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\aoe\foo2" /cygdriv

cygpath
似乎无法正确处理带有重音符号的路径,例如

C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\àòè\foo2"
印刷品

/usr/bin/"C:/foo/àòè/foo2"
鉴于我期望:

/cygdrive/c/foo/àòè/foo2
没有重音符号的相同路径会产生预期结果:

C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\aoe\foo2"
/cygdrive/c/foo/aoe/foo2
我做错什么了吗

------编辑1

我在Win 10上使用Cygpath 2.6.0

C:\cygwin64\bin>cygpath --version
cygpath (cygwin) 2.6.0
Path Conversion Utility
Copyright (C) 1998 - 2016 Cygwin Authors
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

C:\cygwin64\bin>locale
LANG=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
LC_TIME="C.UTF-8"
LC_COLLATE="C.UTF-8"
LC_MONETARY="C.UTF-8"
LC_MESSAGES="C.UTF-8"
LC_ALL=
据我所见,在Adrian回答之后,我认为问题在于我试图在不运行cygwin bash的情况下使用cygpath,因为使用它我没有任何问题

$ cygpath --absolute -C UTF8 "C:\foo\àèò\foo2"
/cygdrive/c/foo/àèò/foo2

但是我需要在没有bash的情况下直接使用cygpath,你认为有办法吗?

你运行的是哪个版本的
Cygwin
/
cygpath
?我不能复制这个:

$ cygpath --absolute -C UTF8 "C:\foo\àòè\foo2"
/cygdrive/c/foo/àòè/foo2

$ cygpath --version
cygpath (cygwin) 1.7.35
Path Conversion Utility
Copyright (C) 1998 - 2015 Red Hat, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=en_US.UTF-8
编辑

作品:

  • mintty.exe
    (Cygwin)、
    cmd.exe
    和Powershell中的
    cygpath-1.7.35
  • mintty.exe(Cygwin)和Powershell中的
    cygpath-2.6.0
不起作用:

  • cmd.exe中的
    cygpath-2.6.0
这似乎与引用有关,并且有一个解决方法。指定不带引号的路径将产生正确的结果:

c:\cygwin\bin>cygpath --absolute -C UTF8 'C:\foo\àèò\foo2'
/cygdrive/c/cygwin/bin/'C:/foo/àèò/foo2'

c:\cygwin\bin>cygpath --absolute -C UTF8 C:\foo\àèò\foo2
/cygdrive/c/foo/àèò/foo2

我不确定
Cygwin
devs是否/如何支持在
Cygwin
-shell之外运行
Cygwin
应用程序,但因为这在我之前就起作用了,我会说这是一个bug,所以你应该将它发布到他们的邮件列表中。

你运行的是什么版本的
Cygwin
/
cygpath
?我不能复制这个:

$ cygpath --absolute -C UTF8 "C:\foo\àòè\foo2"
/cygdrive/c/foo/àòè/foo2

$ cygpath --version
cygpath (cygwin) 1.7.35
Path Conversion Utility
Copyright (C) 1998 - 2015 Red Hat, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=en_US.UTF-8
编辑

作品:

  • mintty.exe
    (Cygwin)、
    cmd.exe
    和Powershell中的
    cygpath-1.7.35
  • mintty.exe(Cygwin)和Powershell中的
    cygpath-2.6.0
不起作用:

  • cmd.exe中的
    cygpath-2.6.0
这似乎与引用有关,并且有一个解决方法。指定不带引号的路径将产生正确的结果:

c:\cygwin\bin>cygpath --absolute -C UTF8 'C:\foo\àèò\foo2'
/cygdrive/c/cygwin/bin/'C:/foo/àèò/foo2'

c:\cygwin\bin>cygpath --absolute -C UTF8 C:\foo\àèò\foo2
/cygdrive/c/foo/àèò/foo2

我不确定
Cygwin
devs是否/如何支持在
Cygwin
-shell之外运行
Cygwin
应用程序,但由于这在以前是有效的,我认为这是一个bug,你应该把它发布到他们的邮件列表中。

2.6.0版本上相同2.6.0版本上相同对我来说,它也可以像预期的那样工作,而无需直接在Windows 10上的Windows终端(
cmd.exe
)中使用
mintty
/
bash
)。刚刚安装了cygwin 32位,使用cmd.exe我也遇到了同样的问题。我刚试过powershell,效果不错。我真的不知道我在想什么。现在可以确认一下,看看我更新的答案。对我来说,它也能像预期的那样工作,没有直接在Windows 10上的Windows终端(
cmd.exe
)中使用
mintty
/
bash
。刚刚安装了cygwin 32位,使用cmd.exe我也遇到了同样的问题。我刚试过powershell,效果不错。我真的不知道我在想什么。现在可以确认一下,看看我更新的答案。