This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 1.7.1: unable to run the a bash script resides in chinese path using: c:\cygwin\bin\bash --login script.

On Feb 20 08:00, Andy Koppe wrote:
> Hongyi Zhao:
> >>Looks like there's some sort of GBK vs UTF-8 mixup going on, because
> >>'??????????????????' is the same byte sequence in GBK as '????????????' is in UTF-8:
> >>\xE6\x96\xB0\xE6\x9F\xA5\xE6\x96\x87\xE7\x8C\xAE
> >
> > Could you please give me some hints on the tools
> > used by you to obtain this conclusion?
> That was just a hunch based on the length of the two strings, and I
> confirmed it by pasting the strings into mintty running a utility for
> echoing keycodes, switching charset as appropriate.
> Anyway, I had a look into why the dosfilewarning prints the wrong
> filename: it calls small_sprintf to print the message, and
> small_sprintf uses the ANSI version of WriteFile to write to
> STD_ERROR_HANDLE, so it ends up interpreting a UTF-8 string as GBK.
> Seems sys_mbstowcs and WriteFileW are needed there.

There's no such thing as a WriteFileW function.  Since that only affects
a few error messages, I don't think it's overly important.  The most
simple approach here is to enforce hex printing of all characters > 0x7f
as hex values as in:

  MS-DOS style path detected: \tmp\t\\xC3\xB6\xC3\xA4
  Preferred POSIX equivalent is: /tmp/t/\xC3\xB6\xC3\xA4

I've changed that in CVS.


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]