Unicode chr(150) en dash

marexposed at googlemail.com marexposed at googlemail.com
Wed Apr 16 05:25:48 CEST 2008

Hello guys & girls

I'm pasting an "en dash" (http://www.fileformat.info/info/unicode/char/2013/index.htm) character into a tkinter widget, expecting it to be properly stored into a MySQL database.

I'm getting this error:
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python24\lib\lib-tk\Tkinter.py", line 1345, in __call__
    return self.func(*args)
  File "chupadato.py", line 25, in guardar
  File "C:\Python24\Lib\site-packages\MySQLdb\cursors.py", line 149, in execute
    query = query.encode(charset)
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u2013' in position
 52: ordinal not in range(256)

Variable 'a' in 'cursor.execute(a)' contains a proper SQL statement, which includes the 'en dash' character just pasted into the Text widget.

When I type 'print chr(150)' into a python command line window I get a LATIN SMALL LETTER U WITH CIRCUMFLEX (http://www.fileformat.info/info/unicode/char/00fb/index.htm), but when I do so into a IDLE window I get a hypen (chr(45).

Funny thing I quite don't understand is, when I do paste that 'en dash' character into a python command window (I'm using MSWindows), the character is conveniently converted to chr(45) which is a hyphen (I wouldn't mind if I could do that by coding, I mean 'adapting' by visual similarity).

I tried searching "en dash" or even "dash" into the encodings folder of python Lib, but I couldn't find anything.

I'm using Windows Vista english, Python 2.4, latest MySQLdb. Default encoding changed (while testing) into "iso-8859-1".

Thanks for any help.

More information about the Python-list mailing list