Bugs item #1443504, was opened at 2006-03-05 14:50
Message generated for change (Comment added) made by jminka
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1443504&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Open
Resolution: None
Priority: 3
Submitted By: Catherine Devlin (catherinedevlin)
Assigned to: Nobody/Anonymous (nobody)
Summary: locale.getpreferredencoding() dies when setlocale fails
Initial Comment:
I'm on Ubuntu 5.10, with Python 2.4.2-0ubuntu2, and
when I open a terminal window and run python, I get
>>> import locale
>>> locale.getpreferredencoding()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/locale.py", line 417, in
getpreferredencoding
setlocale(LC_CTYPE, "")
File "/usr/lib/python2.4/locale.py", line 381, in
setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
However, if I su - root - or even su right back to my
own account (catherine) ! - then everything works.
This is of concern (to me, anyway) because this error
crashes bzr.
I chose "Esperanto" as my language when setting up
Ubuntu. (No, I wasn't trying to be funny - I really do
speak Esperanto!) That may be why I found the problem,
but I don't think this is simply a problem with flawed
Esperanto support in Ubuntu - because the routine works
after su is used, and because
locale.nl_langinfo(CODESET) works fine (please read on).
Anyway, within locale.getpreferredencoding(), line 417
- setlocale(LC_CTYPE, "") - seems to be the problem...
>>> locale.setlocale(locale.LC_CTYPE)
'C'
>>> locale.setlocale(locale.LC_CTYPE, "")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.4/locale.py", line 381, in
setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
>>> locale.setlocale(locale.LC_CTYPE, None)
'C'
This makes me wonder if setlocale(LC_TYPE, "") is
really so very necessary. It seems to be there to prep
for the nl_langinfo call, but it doesn't actually seem
strictly necessary for that call to work.
>>> locale.nl_langinfo(locale.CODESET)
'ANSI_X3.4-1968'
... I get that result whether before or after calling
setlocale, and I get it under any account (including
root, where setlocale does not raise an exception).
Thus, as far as I can tell, it isn't really necessary
to set setlocale(LC_CTYPE, "") or die trying, and
accepting the nl_langinfo result without a
successful setlocale(LC_CTYPE, "") would be preferable
to raising an unhandled exception. I suggest that
setlocale(LC_TYPE, "") be enclosed in a try block.
try:
setlocale(LC_CTYPE, "")
except:
None
Since I don't really understand what it's doing in the
first place, I don't know if this is really a good patch.
Thanks!
----------------------------------------------------------------------
Comment By: jminka (jminka)
Date: 2006-03-17 21:27
Message:
Logged In: YES
user_id=1116964
I've got the same problem with bzr on Gentoo. If LANG or
LC_ALL consists '/', then bzr has the problem (e.g. en_US is
ok, en_US/ISO8859-1 is wrong).
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1443504&group_id=5470
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com