[Python-bugs-list] [ python-Bugs-496084 ] unicode, tkfiledialog.py

noreply@sourceforge.net noreply@sourceforge.net
Sat, 29 Dec 2001 03:57:26 -0800


Bugs item #496084, was opened at 2001-12-22 03:30
You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=496084&group_id=5470

Category: Unicode
Group: None
Status: Open
Resolution: None
>Priority: 3
Submitted By: Klaus-G. Meyer (kgm)
>Assigned to: Martin v. Löwis (loewis)
Summary: unicode, tkfiledialog.py

Initial Comment:
The file tkfiledialog.py from python/lib/lib-tk 
contains some test code:

if __name__ == "__main__":

    print "open", askopenfilename(filetypes=[("all 
filez", "*")])
    print "saveas", asksaveasfilename()


I tried it, but it won't work, if i select filenames 
with umlaut:

C:\Programme\Python\Lib\lib-tk>python tkfiledialog.py
open
Traceback (most recent call last):
  File "tkfiledialog.py", line 128, in ?
    print "open", askopenfilename(filetypes=[("all 
filez", "*")])
UnicodeError: ASCII encoding error: ordinal not in 
range(128)


The reason is (i think), that askopenfilename 
surprisingly returns unicode string instead of string.

If functions return sometimes unicode strings, how 
should this be done?

Is this a bug or a design problem?

It would be nice, if the test code contains a working 
example.

----------------------------------------------------------------------

>Comment By: M.-A. Lemburg (lemburg)
Date: 2001-12-29 03:57

Message:
Logged In: YES 
user_id=38388

I don't know anything a about Tkinter, sorry. Printing Unicode is a huge can of worms -- I'm not sure whether it's 
worth the trouble to try to magically find out which encoding the terminal, GUI or whatever backend you use for 
stdout is being used. ASCII should work in most cases and that's what Python already tries...

Martin, please patch the file or simply close the bug with "Won't fix".

----------------------------------------------------------------------

Comment By: Martin v. Löwis (loewis)
Date: 2001-12-29 01:19

Message:
Logged In: YES 
user_id=21627

It is by design that the dialog returns Unicode strings if
the file name contains non-ASCII characters.

It is easy to fix the example, just append .encode("utf-8")
at the end of each print statement. Fixing it in the "right"
way is more involved; you'll have to find out what encoding
the terminal uses on which the string is printed.

----------------------------------------------------------------------

You can respond by visiting: 
http://sourceforge.net/tracker/?func=detail&atid=105470&aid=496084&group_id=5470