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, как вы думаете, есть способ?


person Polletto    schedule 09.10.2016    source источник
comment
Для меня это также работает, как и ожидалось, без mintty/bash непосредственно в терминале Windows (cmd.exe) в Windows 10.   -  person Adrian Frühwirth    schedule 09.10.2016
comment
Только что установил cygwin 32bit, и с cmd.exe у меня возникла та же проблема. Я только что попробовал с powershell, и он работает. Я действительно не знаю, что думаю.   -  person Polletto    schedule 09.10.2016
comment
Могу подтвердить сейчас, см. мой обновленный ответ.   -  person Adrian Frühwirth    schedule 09.10.2016


Ответы (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 in 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-оболочки, но поскольку это сработало до того, как я бы сказал, что это ошибка, вам следует опубликовать это в их списке рассылки.

person Adrian Frühwirth    schedule 09.10.2016
comment
то же самое на версии 2.6.0 - person matzeri; 09.10.2016