Problem with tkFileDialog.askdirectory(), Windows, and non-ascii paths

Read Roberts rroberts at adobe.com
Fri Oct 8 12:59:50 EDT 2004


Thank your for your response. I did see your 
e-mail when googl'ing for similar issues. 
However, the problem you had was that the the 
object returned  on cancelling is different 
bertween Linux and Windows.

My problem is that when you do select a directory 
with the  tkFileDialog.askdirectory() , on 
Windows the object returned is a byte string, 
with the non-ascii characters converted  to '?". 
Applying the 'unicode" function to this cannot 
restore the lost data.

The particular path i am struggling with a a 
parent directory with the utf-8 name:
  "\343\201\246\343\201\231\343\201\250\343\203\225\343\202\251\343\203\253\343\202\277\343\202\231"


- Read Roberts




At 5:06 AM -0700 10/8/04, Tim Williams wrote:
>Read Roberts <rroberts at adobe.com> wrote in 
>message 
>news:<mailman.4553.1097213592.5135.python-list at python.org>...
>>  I have the current Windows binary install of Python 2.3.4 on my
>>  Windows XP system.
>>
>>  I am pained to discover that  tkFileDialog.askdirectory() returns  a
>>  mangled path when a directory is selected which has non-ascii Unicode
>>  path, as in Kanji characters, i.e. the usull "????" in place of the
>>  original UTF-8 code points.  .
>>
>>  After some time spent Google'ing. I don't find a discussion of this.
>>  Is there some option  or configuration change I can make to fix this?
>>  I can roll my own file-dialog , but I prefer to re-use code.
>
>I had a problem with using tkFileDialog.filename between Windows and
>Linux. The solution I got was to use unicode().
>
>>>>  In article <faf44c99.0402240955.4613fd6a at posting.google.com>,
>>>>   timothy.williams at nvl.army.mil (Tim Williams) wrote:
>>>>
>>>>  >I'm using Python 2.3.2 and tkFileDialog in a program I have. I'm
>>>>  >trying to use this on Linux (RH 8.0) and Windows 2000. When I
>first
>>>>  >upgraded from v2.2 to v2.3. I noticed that
>>>>  >tkFileDialog.askopenfilename() returns a tuple on Cancel instead
>of
>>>>  >''. I found that the Windows version still returns a string ('').
>Now
>>>>  >I'm finding out that tkFileDialog.Directory().show() does this
>too. ...
>>>>  >How can I check tkFileDialog to do the "right" thing?  All I want
>is
>>>>  >the string that contains the path, but I want this to work on
>both
>>>>  >Linux and Windows.
>>>>
>>>>  Is this the sort of thing you want?
>>>>
>  >>> dirobj = tkFileDialog.askdirectory()
>>>>  if not dirobj:
>>>>    # user Cancelled; works whether the return is '' or ()
>>>>    return
>>>>
>>>>  # dirobj may be a string or a Tk_Obj
>>>>  dirname = unicode(dirobj)
>>>>  
>>>>  The same code should work for askopenfilename.
>
>HTH
>--
>http://mail.python.org/mailman/listinfo/python-list




More information about the Python-list mailing list