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] |
On 3/4/2013 4:40 PM, Daniel Colascione wrote:On 3/4/2013 1:39 PM, Corinna Vinschen wrote:On Mar 4 16:26, Ken Brown wrote:On 3/4/2013 11:24 AM, Arthur Tu wrote:Today when i tried to drag a file whose name containing chinese characters into emacs, it failed to open.
Here is the brief review:
1. a file with a pure english file name to emacs-32 frame:
open successfully.
2. a file with chinese characters in its name to emacs-32 frame:
error message: "dnd-open-local-file: Can not read file:/cygdrive/c/Users/Arthur/Desktop/%20%20%20%20.txt". in fact, i tried several times with different name. the name was always decoded as a punch of "20%", even though different chinese characters were there.
3. the same file with chinese characters in its name to a emacs-nox frame(mintty):
the file name was pasted into the buffer correctly. chinese
characters were shown correctly. the file wasn't open. (This is what's
expected to happen in terminal session.)
So my question was around the situation 2. How did the emacs-w32 handle the dragged file?
The code for handling the file name appears to be in src/w32fns.c. I don't know what the issues are in trying to make it work when the name contains Chinese characters. Daniel?
Cygwin is using UTF-8 as codeset by default. Is it possible that w32fns.c is using *shudder* Windows functions to load the file? If so, it uses the current Windows ANSI codepage, perhaps cp850 or some such.
Bottom line: Use Windows functions for the GUI as much as you like. But don't use the Windows file API. Use Cygwin functions for that. If you have to use a Windows functions to fetch the filename, use the UNICODE Windows functions (the one with the trailing W) and convert the filename to the current Cygwin codeset using cygwin_conv_path (CCP_WIN_W_TO_POSIX, ...).
God no --- we're not using Win32 filesystem API functions in cygw32 Emacs. I
haven't had a chance to take a look at the problem yet, but it's probably just a
URI-encoding issue. Emacs insists on receiving drag-and-drop events as URIs,
even if they come in as filenames and pop back out the other end as filenames.
I did some tests that suggest that the problem is not the URI encoding. I filed an emacs bug report with details:
http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13907
Let's followup there.
Ken
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |