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"
/cygdrive/c/foo/aoe/foo2
Я делаю что-то неправильно?
------ РЕДАКТИРОВАТЬ 1
Я использую Cygpath 2.6.0 на Win 10.
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=
Насколько я понимаю, после ответа Адриана, я думаю, что проблема в том, что я пытаюсь использовать cygpath без запуска cygwin bash, потому что при использовании этого у меня нет никаких проблем.
$ cygpath --absolute -C UTF8 "C:\foo\àèò\foo2"
/cygdrive/c/foo/àèò/foo2
Но мне нужно использовать Cygpath напрямую без Bash, как вы думаете, есть способ?
1 ответ
Какая версия 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
РЕДАКТИРОВАТЬ
Работает:
cygpath-1.7.35
вmintty.exe
(Cygwin),cmd.exe
и Powershell.cygpath-2.6.0
вmintty.exe
(Cygwin) и Powershell.
Не работает:
cygpath-2.6.0
вcmd.exe
Похоже, это связано с цитированием и есть обходной путь. Указание пути без кавычек дает правильный результат:
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
поддержка разработчиков работает Cygwin
приложения за пределами Cygwin
-просто, но так как это сработало до того, как я скажу, что это ошибка, вы должны опубликовать ее в своем списке рассылки.