1

cygpath doesn't seem to correctly handle paths with accents, e.g.

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

prints

/usr/bin/"C:/foo/àòè/foo2"

whereas I would expect:

/cygdrive/c/foo/àòè/foo2

The same path without accents yields the expected result:

C:\cygwin64\bin>cygpath --absolute -C UTF8 "C:\foo\aoe\foo2"
/cygdrive/c/foo/aoe/foo2

Am I doing something wrong?

------ EDIT 1

I'm using Cygpath 2.6.0 on 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=

As far i see, after Adrian answer, I think that the problem is that I'm trying to use cygpath without running cygwin bash, because using that i don't have any problem.

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

But I need to use cygpath directly without bash, do you think there is a way?

ErikM
  • 519
  • 5
  • 14

1 Answers1

0

What version of Cygwin/cygpath do you run? I can't duplicate this:

$ 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

Works:

  • cygpath-1.7.35 in mintty.exe (Cygwin), cmd.exe and Powershell.
  • cygpath-2.6.0 in mintty.exe (Cygwin) and Powershell.

Does not work:

  • cygpath-2.6.0 in cmd.exe

This seems to be related to quoting and there is a workaround. Specifying the path without quotes yields the correct result:

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

I'm not sure if/how the Cygwin devs support running Cygwin applications outside a Cygwin-shell but since this worked before I'd say it's a bug, you should post it to their mailing list.

Adrian Frühwirth
  • 42,970
  • 10
  • 60
  • 71