Python 2.5.2 on Ubuntu Hardy Utf-8-Euro error

J

Josep

I'm playing with an application framework (or kinda) that's developed
with python, and it throws this error:

File "/usr/lib/python2.5/site-packages/Dabo-0.8.3-py2.5.egg/dabo/db/dCursorMixin.py", line 281, in execute
sql = unicode(sql, self.Encoding)
LookupError: unknown encoding: utf_8_euro

At the application (DABO) mailing list, they have pointed that this has
to be a Python issue. As I'm a totally python newbie, I would ask if
somebody has experimented this kind of error, and if there is any known
solution. I've found no clue searching at Google right now.

My Python version is 2.5.2, Ubuntu Hardy .deb package.

Thanks in advance for your help.

--

Josep Sànchez
[papapep]
----------------------------------
http://extralinux.net
----------------------------------

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQBIP/IZsQfW0y2pjQkRArbaAKCS06qFLqSpCTOIjdprcXz6twxVaACeLSxF
1X1WBK442eY7+z91BeGAmYk=
=7rkf
-----END PGP SIGNATURE-----
 
S

Sanoski

I'm playing with an application framework (or kinda) that's developed
with python, and it throws this error:


At the application (DABO) mailing list, they have pointed that this has
to be a Python issue. As I'm a totally python newbie, I would ask if
somebody has experimented this kind of error, and if there is any known
solution. I've found no clue searching at Google right now.
I've had nothing but problems ever since I upgraded to Hardy. I used
to be a die hard Ubuntu fan until recently. Maybe try a better OS
My Python version is 2.5.2, Ubuntu Hardy .deb package.

Thanks in advance for your help.

--

Josep Sànchez
[papapep]
----------------------------------http://extralinux.net
 
P

Peter Otten

Josep said:
I'm playing with an application framework (or kinda) that's developed
with python, and it throws this error:



At the application (DABO) mailing list, they have pointed that this has
to be a Python issue. As I'm a totally python newbie, I would ask if
somebody has experimented this kind of error, and if there is any known
solution. I've found no clue searching at Google right now.

My Python version is 2.5.2, Ubuntu Hardy .deb package.

Python might get confused by an @EURO suffix in the locale:

$ LANG=de_DE.UTF-8@EURO
$ python -c"import locale; print locale.getdefaultlocale()"
('de_DE', 'utf_8_euro')

Try setting the LANG environment variable to something like

$ LANG=de_DE.UTF-8
$ python -c"import locale; print locale.getdefaultlocale()"
('de_DE', 'UTF8')

before you run your program (use ca_ES or whatever you need instead of
de_DE).

Peter
 
M

Martin v. Löwis

File "/usr/lib/python2.5/site-packages/Dabo-0.8.3-py2.5.egg/dabo/db/dCursorMixin.py", line 281, in execute
At the application (DABO) mailing list, they have pointed that this has
to be a Python issue.

It's definitely not a Python issue.
As I'm a totally python newbie, I would ask if
somebody has experimented this kind of error, and if there is any known
solution. I've found no clue searching at Google right now.

The problem is that self.Encoding is incorrect - it should not be
utf_8_euro. Instead, it should be UTF-8 (or perhaps utf_8). DABO
shouldn't use locale.getdefaultlocale()[1], but
locale.getpreferredencoding().

Regards,
Martin
 
P

Peter Otten

Martin v. Löwis said:
At the application (DABO) mailing list, they have pointed that this has
to be a Python issue.

It's definitely not a Python issue.
As I'm a totally python newbie, I would ask if
somebody has experimented this kind of error, and if there is any known
solution. I've found no clue searching at Google right now.

The problem is that self.Encoding is incorrect - it should not be
utf_8_euro. Instead, it should be UTF-8 (or perhaps utf_8). DABO
shouldn't use locale.getdefaultlocale()[1], but
locale.getpreferredencoding().

I think that is the effect of a bug:
('en_US', 'utf_8_euro')

The function first normalizes the "@" away and then looks for it. Is that
the expected behaviour?

Peter
 
M

M.-A. Lemburg

Python might get confused by an @EURO suffix in the locale:

Right, that's what's happening.

The locale module uses a locale aliasing table that help map environment
locale settings to C local names.

That table was last updated in 2004 and since then a lot more
locale variable strings have made their way into the Linux
distros.

I guess we need to update the table...
$ LANG=de_DE.UTF-8@EURO
$ python -c"import locale; print locale.getdefaultlocale()"
('de_DE', 'utf_8_euro')

Try setting the LANG environment variable to something like

$ LANG=de_DE.UTF-8
$ python -c"import locale; print locale.getdefaultlocale()"
('de_DE', 'UTF8')

before you run your program (use ca_ES or whatever you need instead of
de_DE).

Peter

--
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source (#1, May 30 2008)________________________________________________________________________

:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::


eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
 
M

M.-A. Lemburg

Right, that's what's happening.

The locale module uses a locale aliasing table that help map environment
locale settings to C local names.

That table was last updated in 2004 and since then a lot more
locale variable strings have made their way into the Linux
distros.

I guess we need to update the table...

I've opened ticket http://bugs.python.org/issue3011 for this.

--
Marc-Andre Lemburg
eGenix.com

Professional Python Services directly from the Source (#1, May 30 2008)________________________________________________________________________

:::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,MacOSX for free ! ::::


eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48
D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg
Registered at Amtsgericht Duesseldorf: HRB 46611
 
M

Martin v. Löwis

The function first normalizes the "@" away and then looks for it. Is that
the expected behaviour?

I believe this functionality is broken by design. Python can't possibly
know correctly what each locale name on each system means, and what
encoding is used in the locale.

Instead, the system's API to find out the encoding should be used,
as exposed in locale.getpreferredencoding().

Regards,
Martin
 
J

Jan Claeys

Op Fri, 30 May 2008 22:37:14 +0200, schreef M.-A. Lemburg:
Right, that's what's happening.

The locale module uses a locale aliasing table that help map environment
locale settings to C local names.

That table was last updated in 2004 and since then a lot more locale
variable strings have made their way into the Linux distros.

I guess we need to update the table...

Ubuntu doesn't use @EURO suffixes...?

$ grep EURO /usr/share/i18n/SUPPORTED
$
 

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,584
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top