Issue 1589292
Created on 2006-11-02 14:21 by cknittel, last changed 2012-01-05 22:29 by schlatterbeck.
| Messages | |||
|---|---|---|---|
| msg2328 | Author: [hidden] (cknittel) | Date: 2006-11-02 14:21 | |
Roundup 1.2.1, Python 2.5 and sqlite:
UnicodeEncodeError for German umlauts
I have installed Roundup 1.2.1 on Windows with Python
2.5 and am using the sqlite backend (with the sqlite
that is now included in the Python 2.5 distribution).
When trying to save a message that contains German
umlauts (äöü), an exception occurs.
I get the following traceback:
Traceback (most recent call last):
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\client.py",
line 730, in renderContext
result = pt.render(self, None, None, **args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\templating.py",
line 323, in render
getEngine().getContext(c), output, tal=1,
strictinsert=0)()
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 192, in __call__
self.interpret(self.program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 666, in do_useMacro
self.interpret(macro)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 411, in do_optTag_tal
self.do_optTag(stuff)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 396, in do_optTag
return self.no_tag(start, program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 391, in no_tag
self.interpret(program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 689, in do_defineSlot
self.interpret(slot)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 632, in do_condition
self.interpret(block)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 632, in do_condition
self.interpret(block)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 608, in do_loop_tal
self.interpret(block)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 411, in do_optTag_tal
self.do_optTag(stuff)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 396, in do_optTag
return self.no_tag(start, program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 391, in no_tag
self.interpret(program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 544, in do_insertTranslation
self.interpretWithStream(stuff[1], tmpstream)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 216, in interpretWithStream
self.interpret(program)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 516, in do_i18nVariable
value = self.engine.evaluate(expression)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\PageTemplates\TALES.py",
line 227, in evaluate
return expression(self)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\PageTemplates\Expressions.py",
line 194, in __call__
return self._eval(econtext)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\PageTemplates\Expressions.py",
line 182, in _eval
ob = self._subexprs[-1](econtext)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\PageTemplates\Expressions.py",
line 138, in _eval
ob = restrictedTraverse(ob, path, getSecurityManager())
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\PageTemplates\Expressions.py",
line 317, in restrictedTraverse
o = guarded_getattr(object, name, M)
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\templating.py",
line 830, in __getattr__
return self[attr]
File
"C:\Programme\Python25\lib\site-packages\roundup\cgi\templating.py",
line 807, in __getitem__
value = self._klass.get(self._nodeid, items[0], None)
File
"C:\Programme\Python25\lib\site-packages\roundup\backends\rdbms_common.py",
line 2626, in get
return Class.get(self, nodeid, propname, default)
File
"C:\Programme\Python25\lib\site-packages\roundup\backends\rdbms_common.py",
line 1460, in get
d = self.db.getnode(self.classname, nodeid)
File
"C:\Programme\Python25\lib\site-packages\roundup\backends\rdbms_common.py",
line 963, in getnode
value =
self.sql_to_hyperdb_value[props[name].__class__](value)
UnicodeEncodeError: 'ascii' codec can't encode
characters in position 0-2: ordinal not in range(128)
The problem does not occur with Roundup 1.2.1, Python
2.4.4 and pysqlite 1.1.8.
I also wanted to try Roundup 1.2.1, Python 2.4.4 and
pysqlite 2.3.2, but this combination gave me the
following error during tracker initialisation:
Traceback (most recent call last):
File "<string>", line 1, in ?
File
"C:\Python24\Lib\site-packages\roundup\scripts\roundup_admin.py",
line 38, in run
sys.exit(tool.main())
File
"C:\Python24\Lib\site-packages\roundup\admin.py", line
1491, in main
ret = self.run_command(args)
File
"C:\Python24\Lib\site-packages\roundup\admin.py", line
1369, in run_command
return self.do_initialise(self.tracker_home, args)
File
"C:\Python24\Lib\site-packages\roundup\admin.py", line
514, in do_initialise
tracker.init(password.Password(adminpw))
File
"C:\Python24\Lib\site-packages\roundup\instance.py",
line 154, in init
db = self.open('admin')
File
"C:\Python24\Lib\site-packages\roundup\instance.py",
line 84, in open
vars = {
File
"C:\Python24\Lib\site-packages\roundup\backends\rdbms_common.py",
line 129, in __init__
self.open_connection()
File
"C:\Python24\Lib\site-packages\roundup\backends\back_sqlite.py",
line 114, in open_connection
(self.conn, self.cursor) = self.sql_open_connection()
File
"C:\Python24\Lib\site-packages\roundup\backends\back_sqlite.py",
line 105, in sql_open_connection
conn = sqlite.connect(db=db)
TypeError: function takes at least 1 argument (0 given)
|
|||
| msg2329 | Author: [hidden] (richard) | Date: 2006-11-09 00:59 | |
Logged In: YES user_id=6405 The error you're getting is not related to unicode, and has been fixed in CVS. Expect roundup 1.3.0 to be released very soon. If you need the code sooner, you can grab back_sqlite.py from CVS via the CVS browser on sf.net |
|||
| msg2330 | Author: [hidden] (cknittel) | Date: 2006-11-10 07:52 | |
Logged In: YES user_id=1195809 Hi Richard, Actually this bug report contains two problems. Sorry about that, maybe these should have been two separate bug reports. Bug 1: The UnicodeEncodeError for German umlauts Bug 2: The inability to use Python 2.4.4 with pysqlite 2.3.2 I have just tested Roundup 1.3.0. It turns out that Bug 2 is fixed, whereas Bug 1 isn't. I.e. German Umlauts still give me the same traceback with the UnicodeEncodeError if I use - Python 2.5 with the integrated pysqlite or - Python 2.4.4 with pysqlite 2.3.2 but not if I use - Python 2.4.4 with pysqlite 1.1.8. Thanks and best regards, Christoph |
|||
| msg2331 | Author: [hidden] (richard) | Date: 2006-11-11 03:21 | |
Logged In: YES user_id=6405 Sorry, my bad. I thought I'd tested this under 2.5 but hadn't. It's definitely fixed now. |
|||
| msg2332 | Author: [hidden] (cknittel) | Date: 2006-11-13 08:55 | |
Logged In: YES
user_id=1195809
Hi Richard,
With 1.3.1, I can now enter Umlauts in messages! :-)
However, I cannot use them in the search box. :-(
Searching for "äöü" (in message bodies) gives me the
traceback below.
Thanks and best regards,
Christoph
Traceback (most recent call last):
File
"C:\Python25\Lib\site-packages\roundup\cgi\client.py", line
732, in renderContext
result = pt.render(self, None, None, **args)
File
"C:\Python25\Lib\site-packages\roundup\cgi\templating.py",
line 323, in render
getEngine().getContext(c), output, tal=1, strictinsert=0)()
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 192, in __call__
self.interpret(self.program)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 666, in do_useMacro
self.interpret(macro)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 411, in do_optTag_tal
self.do_optTag(stuff)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 396, in do_optTag
return self.no_tag(start, program)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 391, in no_tag
self.interpret(program)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 236, in interpret
handlers[opcode](self, args)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 265, in do_startEndTag
self.do_startTag(stuff, self.endsep, self.endlen)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 293, in do_startTag
ok, name, s = attrAction(self, item)
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 372, in attrAction_tal
translated = self.translate(msgid or value, value, {})
File
"C:\Python25\lib\site-packages\roundup\cgi\TAL\TALInterpreter.py",
line 618, in translate
msgid, i18ndict, default=default)
File
"C:\Python25\lib\site-packages\roundup\cgi\TranslationService.py",
line 77, in translate
target_language=target_language)
File
"C:\Python25\lib\site-packages\roundup\cgi\TranslationService.py",
line 32, in translate
_msg = self.gettext(msgid)
File
"C:\Python25\lib\site-packages\roundup\cgi\TranslationService.py",
line 38, in gettext
return self.ugettext(msgid).encode(self.OUTPUT_ENCODING)
File "C:\Python25\lib\gettext.py", line 404, in ugettext
return unicode(message)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in
position 0: ordinal not in range(128)
|
|||
| msg2333 | Author: [hidden] (richard) | Date: 2006-12-13 23:25 | |
Sorry, I can't reproduce this. Exactly what are the steps I need to take to reproduce it? Please start with a new demo instance. Also, exactly what Python and backend are you using? |
|||
| msg2334 | Author: [hidden] (anonymous) | Date: 2006-12-14 14:16 | |
Logged In: NO Hi Richard, This is strange because I can reproduce the problem easily by following these steps on a Windows XP system: 1.) Install Python 2.5 2.) Install pywin32 build 210 3.) Extract the Roundup 1.3.1 tarball 4.) Run demo.py 5.) Search for "äöü" (in the search box in the upper-right corner) (My system is in German, I am not sure if that makes a difference.) Best regards, Christoph |
|||
| msg4485 | Author: [hidden] (schlatterbeck) | Date: 2012-01-05 22:29 | |
can't be reproduced and hasn't been reported again. Please submit new bug if this happens with recent version. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2012-01-05 22:29:47 | schlatterbeck | set | status: open -> closed nosy: + schlatterbeck messages: + msg4485 |
| 2006-11-02 14:21:05 | cknittel | create | |