2016-10-09 2 views
1

cygpath, похоже, неправильно обрабатывает дорожки с акцентами, например.Cygpath and accents (àèìòù)

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 

я делаю что-то неправильно?

------ EDIT 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= 

Насколько я вижу, после Adrian ответа, я думаю, что проблема в том, что я пытаюсь использовать cygpath, не запуская cygwin bash, потому что, используя это, у меня нет никаких проблем.

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

Но мне нужно использовать cygpath напрямую без bash, вы думаете, что есть способ?

+0

Для меня это также работает без 'mintty' /' bash' непосредственно в терминале Windows ('cmd.exe') в Windows 10. –

+0

Просто установлен cygwin 32bit и с cmd.exe У меня такая же проблема. Я просто попробовал с powershell, и это работает. Я действительно не знаю, что думаю. – Polletto

+0

Подтвердите сейчас, см. Мой обновленный ответ. –

ответ

0

Какую версию 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 

EDIT

Работы:

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

+0

тот же вариант версии 2.6.0 – matzeri

 Смежные вопросы

  • Нет связанных вопросов^_^