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