#2905 closed defect (fixed)
UnicodeDecodeError
Reported by: | anonymous | Owned by: | Christian Boos |
---|---|---|---|
Priority: | normal | Milestone: | 0.10 |
Component: | general | Version: | 0.10.2 |
Severity: | normal | Keywords: | UnicodeDecodeError unicode utf8 pysqlite |
Cc: | m@…, johannes.rudolph@… | Branch: | |
Release Notes: | |||
API Changes: | |||
Internal Changes: |
Description
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 283, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 148, in dispatch populate_hdf(req.hdf, self.env, req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 68, in populate_hdf hdf['trac'] = { File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 194, in __setitem__ self.set_value(name, value, True) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 236, in set_value add_value(name, value) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 228, in add_value add_value('%s.%s' % (prefix, k), value[k]) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 218, in add_value self.hdf.setValue(prefix, util.escape(value)) File "/usr/lib/python2.4/site-packages/trac/util/html.py", line 95, in escape text = unicode(text).replace('&', '&') \ UnicodeDecodeError: 'ascii' codec can't decode byte 0xeb in position 4: ordinal not in range(128)
I use mod_python for trac-devel -r 3025. This is my apache setting.
SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv /my/TracRepo PythonOption TracLocale "ko_KR.utf8" SetEnv PYTHON_EGG_CACHE /my/EggCache
If i delete "PythonOption TracLocale "ko_KR.utf8"", The error message is not occured.
Attachments (4)
Change History (56)
comment:1 by , 19 years ago
comment:2 by , 19 years ago
Milestone: | 0.9.5 → 0.10 |
---|---|
Owner: | changed from | to
Status: | new → assigned |
This is a problem in our date formatting
comment:3 by , 19 years ago
Can you try the attached patch and let me know whether it fixes the issue?
comment:4 by , 19 years ago
Thanks for patch. I tested Trac -r 3032(head) and -r 3030.
Before appling the patch.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 283, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 148, in dispatch populate_hdf(req.hdf, self.env, req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 68, in populate_hdf hdf['trac'] = { File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 194, in __setitem__ self.set_value(name, value, True) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 236, in set_value add_value(name, value) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 228, in add_value add_value('%s.%s' % (prefix, k), value[k]) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 218, in add_value self.hdf.setValue(prefix, markup.escape(value)) File "/usr/lib/python2.4/site-packages/trac/util/markup.py", line 107, in escape text = unicode(text) UnicodeDecodeError: 'ascii' codec can't decode byte 0xeb in position 4: ordinal not in range(128)
After appling the patch.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 283, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 162, in dispatch chrome.populate_hdf(req, chosen_handler) File "/usr/lib/python2.4/site-packages/trac/web/chrome.py", line 262, in populate_hdf for category, name, text in contributor.get_navigation_items(req): File "/usr/lib/python2.4/site-packages/trac/web/auth.py", line 70, in get_navigation_items yield ('metanav', 'login', UnicodeDecodeError: 'ascii' codec can't decode byte 0xeb in position 4: ordinal not in range(128)
Whether I switched off the "PythonOption TracLocale "ko_KR.utf8"" or not, The second error is occured.
I think that this is a new problem about UnicodeDecodeError.
comment:5 by , 19 years ago
I guess this is related to your login name containing non-ASCII characters, right?
comment:6 by , 19 years ago
Previously posted patch committed in [3035], which should fix the issue with date/time formatting.
comment:7 by , 19 years ago
I've attached another patch that should hopefully help with non-ASCII login names. Can you please try that again? Thanks.
comment:8 by , 19 years ago
Thanks for your patch. But I use ASCII login names(AlphaNumeric).
I tested it for trac -r 3040.
Before the patch, the same error is occured at auth.py. After the patch, the error message is only
'NoneType' object has no attribute 'decode'
Whether I switched off the "PythonOption TracLocale "ko_KR.utf8"" or not, the same error is occured.
comment:9 by , 19 years ago
Please ignore my previous posting. I need more testing for the problem.
After testing, I will post the test result. Thank you…
comment:10 by , 19 years ago
The test result using trac-3040 with the patch.
'NoneType' object has no attribute 'decode'
The test result using trac-3040 without the patch.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 283, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 170, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/wiki/web_ui.py", line 109, in process_request self._render_history(req, db, page) File "/usr/lib/python2.4/site-packages/trac/wiki/web_ui.py", line 343, in _render_history req.hdf['wiki.history'] = history File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 194, in __setitem__ self.set_value(name, value, True) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 236, in set_value add_value(name, value) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 233, in add_value add_value('%s.%d' % (prefix, idx), item) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 228, in add_value add_value('%s.%s' % (prefix, k), value[k]) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 218, in add_value self.hdf.setValue(prefix, markup.escape(value)) File "/usr/lib/python2.4/site-packages/trac/util/markup.py", line 107, in escape text = unicode(text) UnicodeDecodeError: 'ascii' codec can't decode byte 0xeb in position 2: ordinal not in range(128)
comment:11 by , 19 years ago
Cc: | added |
---|---|
Keywords: | unicode utf8 added |
comment:12 by , 19 years ago
Cc: | added |
---|
It seems like this is happening in many modules. I also have this with changesets:
Traceback (most recent call last): File "c:\python23\Lib\site-packages\trac\web\main.py", line 290, in dispatch_request dispatcher.dispatch(req) File "c:\python23\Lib\site-packages\trac\web\main.py", line 170, in dispatch resp = chosen_handler.process_request(req) File "c:\python23\Lib\site-packages\trac\versioncontrol\web_ui\changeset.py", line 218, in process_request diff_args, diff_options) File "c:\python23\Lib\site-packages\trac\versioncontrol\web_ui\changeset.py", line 456, in _render_html diffs = _content_changes(old_node, new_node) File "c:\python23\Lib\site-packages\trac\versioncontrol\web_ui\changeset.py", line 428, in _content_changes ignore_space_changes='-b' in options) File "C:\Python23\lib\site-packages\trac\versioncontrol\diff.py", line 188, in hdf_diff line = space_re.sub(htmlify, escape(line, quotes=False)) File "c:\python23\Lib\site-packages\trac\util\markup.py", line 107, in escape text = unicode(text) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
comment:13 by , 19 years ago
Cc: | m@tacker.org;peter.bruin@boschman.com.sg → m@tacker.org, peter.bruin@boschman.com.sg |
---|
Use comma+space in cc field
comment:14 by , 19 years ago
Thanks for the correction.
I rolled back to r3022 and the problem is gone. 0Xc3 is indeed a character that appears in one of the text files that was changed in the changeset that caused the Oops.
comment:15 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
This should be fixed in [3084].
comment:16 by , 19 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Sorry, the error still persists.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 299, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 175, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/ticket/report.py", line 86, in process_request resp = self._render_view(req, db, id) File "/usr/lib/python2.4/site-packages/trac/ticket/report.py", line 254, in _render_view req.hdf['%s.real' % prefix] = col[0] File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 194, in __setitem__ self.set_value(name, value, True) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 236, in set_value add_value(name, value) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 218, in add_value self.hdf.setValue(prefix, markup.escape(value)) UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 1: ordinal not in range(128)
comment:17 by , 19 years ago
Cc: | added |
---|
I'm getting this error:
Traceback (most recent call last): File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 299, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.3/site-packages/trac/web/main.py", line 175, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.3/site-packages/trac/versioncontrol/web_ui/changeset.py", line 241, in process_request diff_args, diff_options) File "/usr/lib/python2.3/site-packages/trac/versioncontrol/web_ui/changeset.py", line 479, in _render_html diffs = _content_changes(old_node, new_node) File "/usr/lib/python2.3/site-packages/trac/versioncontrol/web_ui/changeset.py", line 451, in _content_changes ignore_space_changes='-b' in options) File "/usr/lib/python2.3/site-packages/trac/versioncontrol/diff.py", line 198, in hdf_diff line = escape(line, quotes=False).replace('\0', '<del>') \ File "/usr/lib/python2.3/site-packages/trac/util/markup.py", line 114, in escape text = text.decode('utf-8') UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid data
comment:18 by , 19 years ago
I can confirm that, for me at least, [3084] fixes the issue.
However, there's problably a better way to avoid the problem,
as in this situation we try to explicitely convert both file
contenst to utf8 (in _content_changes(old_node, new_node)
).
As we already discussed, we should try to take into account the file encoding before comparing them. I'll see what I can do in this area.
comment:19 by , 19 years ago
Priority: | normal → high |
---|
Please try out the following patch, it works for me even without r3084:
Index: changeset.py =================================================================== --- changeset.py (revision 3090) +++ changeset.py (working copy) @@ -420,16 +420,21 @@ The list is empty when no differences between comparable files are detected, but the return value is None for non-comparable files. """ - data = old_node.get_content().read() - if is_binary(data): + old_content = old_node.get_content().read() + if is_binary(old_content): return None - old_content = mimeview.to_utf8(data, old_node.content_type) - data = new_node.get_content().read() - if is_binary(data): + new_content = new_node.get_content().read() + if is_binary(new_content): return None - new_content = mimeview.to_utf8(data, new_node.content_type) + old_cset = mimeview.get_charset(old_content, old_node.content_type) + new_cset = mimeview.get_charset(new_content, new_node.content_type) + # character sets should be 'iso-8859-15' at the very least + assert old_cset and new_cset + old_content = unicode(old_content, old_cset) + new_content = unicode(new_content, new_cset) + if old_content != new_content: context = 3 options = diff_options[1]
I'll follow-up with a more complete patch, which will also take care of the textual diff view.
by , 19 years ago
Attachment: | explicit_unicode_diff.patch added |
---|
Patch on top of r3091 for doing the version control related diffs using unicode strings
comment:20 by , 19 years ago
OK, the small patch did certainly help. But I have some strange non-deterministic behaviour, sometimes it works without patch, sometimes it doesn't. My working copy seems to be somewhat corrupted…
comment:23 by , 19 years ago
I think this should also be applied to util.markup.Fragment
:
-
trac/util/markup.py
317 324 yield escape(child, quotes=False) 318 325 319 326 def __str__(self): 320 return Markup(''.join(self.serialize())) 327 return Markup(''.join(self.serialize())).encode('utf-8') 321 328 322 329 def __add__(self, other): 323 330 return Fragment()[self, other]
comment:24 by , 19 years ago
Owner: | changed from | to
---|---|
Status: | reopened → new |
Well, Alec, I don't think so.
We have to convert unicode
strings to plain str
with a specified
encoding only at clearly defined times, like when sending text to the
browser (convert to utf8) or sending a generated mail (convert to the
configured encoding), because we can't switch back and forth between
encoded strings and unicode as the charset used for the encoding is
not remembered.
If you make an object's __str__
return an UTF-8 encoded string,
next time you'll call unicode
on that, you'll most likely get
an exception:
>>> class txt(object): ... def __str__(self): ... return u'été'.encode('utf-8') ... >>> str(txt()) '\xc3\xa9t\xc3\xa9' >>> unicode(txt()) Traceback (most recent call last): File "<stdin>", line 1, in ? UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)
with 'ascii'
replaced by whatever is your sys.getdefaultencoding()
.
As for the patch above, I'll complement it with some fallback in
the style of trac.util.to_utf8
, in case there's still an UnicodeError
exception raised. This can happen if a wrong charset has been associated
to the file, using the svn:mime-type
property.
comment:25 by , 19 years ago
The issues with TracChangeset and TracBrowser modules
are fixed by r3092. It should be noted that with that fix,
r3084 is not needed, so I wonder if we should revert it in
or not, since assuming an 'utf-8'
encoding could lead to
or mask other errors…
I also saw that Markus reported errors with the report module, which are probably still there, so I'll leave this ticket opened.
comment:27 by , 19 years ago
I confirm that the problems I had with TracChangeset are resolved with r3092. Thanks.
comment:28 by , 19 years ago
Christian, that makes sense. However, I've been testing with the PEC data and #2868 causes an exception at source:sandbox/workflow/trac/web/clearsilver.py on line 235. markup.Markup
is treated explicitly, but markup.Element
is not, which I believe it should be. My previous patch fixed this.
I'm seeing this in WorkFlow though, so I could be not encoding something correctly, but my thought was that if it's already got explicit handling for Markup it probably should for Element?
Traceback (most recent call last): File "/home/athomas/projects/trac/workflow/trac/web/main.py", line 299, in dispatch_request dispatcher.dispatch(req) File "/home/athomas/projects/trac/workflow/trac/web/main.py", line 175, in dispatch resp = chosen_handler.process_request(req) File "/home/athomas/projects/trac/workflow/trac/ticket/web_ui.py", line 188, in process_request self._insert_ticket_data(req, db, ticket, reporter_id, fields) File "/home/athomas/projects/trac/workflow/trac/ticket/web_ui.py", line 469, in _insert_ticket_data req.hdf['ticket.%s' % field['name']] = field File "/home/athomas/projects/trac/workflow/trac/web/clearsilver.py", line 194, in __setitem__ self.set_value(name, value, True) File "/home/athomas/projects/trac/workflow/trac/web/clearsilver.py", line 236, in set_value add_value(name, value) File "/home/athomas/projects/trac/workflow/trac/web/clearsilver.py", line 228, in add_value add_value('%s.%s' % (prefix, k), value[k]) File "/home/athomas/projects/trac/workflow/trac/web/clearsilver.py", line 228, in add_value add_value('%s.%s' % (prefix, k), value[k]) File "/home/athomas/projects/trac/workflow/trac/web/clearsilver.py", line 235, in add_value self.hdf.setValue(prefix, str(value)) UnicodeEncodeError: 'ascii' codec can't encode characters in position 232-237: ordinal not in range(128)
comment:29 by , 19 years ago
As for a special treatment for Element
(Fragment
even),
I'm all for it, but it should rather be done like this:
-
clearsilver.py
213 213 self.hdf.setValue(prefix, str(int(value))) 214 214 elif isinstance(value, markup.Markup): 215 215 self.hdf.setValue(prefix, value.encode('utf-8')) 216 elif isinstance(value, markup.Fragment): 217 self.hdf.setValue(prefix, unicode(value).encode('utf-8')) 216 218 elif isinstance(value, str): 217 219 if escape: 218 220 self.hdf.setValue(prefix, markup.escape(value))
comment:31 by , 19 years ago
I have the problem. I tested it in Trac -r 3104.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req) File "/usr/lib/python2.4/site-packages/trac/web/modpython_frontend.py", line 86, in handler\n gateway.run(dispatch_request) File "/usr/lib/python2.4/site-packages/trac/web/wsgi.py", line 87, in run\n response = application(self.environ, self._start_response) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 311, in dispatch_request\n req.hdf['error'] = { File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 194, in __setitem__\n self.set_value(name, value, True) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 238, in set_value\n add_value(name, value) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 230, in add_value\n add_value('%s.%s' % (prefix, k), value[k]) File "/usr/lib/python2.4/site-packages/trac/web/clearsilver.py", line 220, in add_value\n self.hdf.setValue(prefix, markup.escape(value)) UnicodeEncodeError: 'ascii' codec can't encode character u'\\uc774' in position 0: ordinal not in range(128)
If I apply the patch, there is no problem.
-
trunk/trac/web/clearsilver.py
217 217 self.hdf.setValue(prefix, unicode(value).encode('utf-8')) 218 218 elif isinstance(value, str): 219 219 if escape: 220 self.hdf.setValue(prefix, markup.escape(value) )220 self.hdf.setValue(prefix, markup.escape(value).encode('utf-8')) 221 221 else: 222 222 self.hdf.setValue(prefix, value) 223 223 elif isinstance(value, unicode):
Please, confirm the patch.
comment:33 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
comment:34 by , 19 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I still have the error with a report.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 300, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 176, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/ticket/report.py", line 86, in process_request resp = self._render_view(req, db, id) File "/usr/lib/python2.4/site-packages/trac/ticket/report.py", line 335, in _render_view prefix = 'report.items.%d.%s' % (row_idx, unicode(column)) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
This is the report entry from the db
11||Termine|SELECT id AS ticket, strftime('%d.%m.%Y', d.value) AS Fälligkeit, round((julianday(d.value) - julianday('now')))||' Tage' AS verbleibend, summary AS Beschreibung, summary AS _summary, description AS _description_, strftime('%s', d.value) AS _changetime, p.value AS __color__ FROM ticket t, enum p LEFT OUTER JOIN ticket_custom d ON (t.id=d.ticket AND d.name='due') WHERE status IN ('new', 'assigned', 'reopened') AND t.type = 'Termin' AND p.name = t.priority AND p.type = 'priority' AND d.value != '' AND d.value > date('now') ORDER BY d.value ASC, p.value|Zeigt alle Termine nach ihrem [wiki:TicketFaelligkeit Datum] sortiert an.
by , 19 years ago
Attachment: | another_2905_fix.diff added |
---|
Patch on r3107 — fixes the report error for me.
comment:35 by , 19 years ago
Thanks for giving us report entry. While testing it, I could reproduce the error, but I had a slightly different error than you.
Can you try the following patch: attachment:another_2905_fix.diff
First, there's a fix for cursor.description
which used
to give back an utf-8 encoded string (fixed pysqlite2 only so far).
Then, the "Fälligkeit" value was used in the HDF name, a situation rather unusual…
comment:37 by , 19 years ago
Keywords: | pysqlite added |
---|
Ok, I applied a slightly different fix in r3109. Can you test it too, please?
comment:39 by , 19 years ago
Uh. Found another one using the TicketQuery Macro.
Error: Macro TicketQuery(type=Termin&status=new|assigned|reopened) failed 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
comment:40 by , 19 years ago
And a third on in ticket view
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 300, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 176, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 222, in process_request ticket = Ticket(self.env, id, db=db) File "/usr/lib/python2.4/site-packages/trac/ticket/model.py", line 35, in __init__ self.fields = TicketSystem(self.env).get_ticket_fields() File "/usr/lib/python2.4/site-packages/trac/ticket/api.py", line 99, in get_ticket_fields for field in self.get_custom_fields(): File "/usr/lib/python2.4/site-packages/trac/ticket/api.py", line 118, in get_custom_fields field = { File "/usr/lib/python2.4/site-packages/trac/wiki/formatter.py", line 835, in wiki_to_oneliner OneLinerFormatter(env, absurls, db).format(wikitext, out, shorten) File "/usr/lib/python2.4/site-packages/trac/wiki/formatter.py", line 765, in format result = re.sub(self.wiki.rules, self.replace, result) File "/usr/lib/python2.4/sre.py", line 142, in sub return _compile(pattern, 0).sub(repl, string, count) File "/usr/lib/python2.4/site-packages/trac/wiki/formatter.py", line 610, in replace return getattr(self, '_' + itype + '_formatter')(match, fullmatch) File "/usr/lib/python2.4/site-packages/trac/wiki/formatter.py", line 342, in _lhref_formatter return self._make_link(ns, target, match, label) File "/usr/lib/python2.4/site-packages/trac/wiki/formatter.py", line 349, in _make_link escape(label, False))) File "/usr/lib/python2.4/site-packages/trac/util/markup.py", line 107, in escape text = unicode(text) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
comment:41 by , 19 years ago
Markus, the error just above is related to #2972. There's a patch there which I believe will work.
For the error with the TicketQuery macro, I've not been able to reproduce it, but it's probably the same cause as the other one.
comment:44 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
I think that as of r3141, there are no errors remaining (particularly thanks to r3137, which should fix the error with TicketQuery above)
comment:45 by , 19 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
I used trac-r3213(dev) of trunk.
When I set the due date to the schedule of milestone, the problem is occured.
I use "2006년 03월 30일" as due date(YYYY년 MM월 DD일). This is a korean date/time format.
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 299, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 196, in dispatch raise HTTPInternalError(e.message) File "/usr/lib/python2.4/site-packages/trac/web/api.py", line 46, in __call__ Exception.__init__(self, '%s %s (%s)' % (self.code, self.reason, UnicodeEncodeError: 'ascii' codec can't encode character u'\ub144' in position 4: ordinal not in range(128)
comment:46 by , 19 years ago
Yes, I could reproduce this too.
Can you please upgrade to r3215 and try if that fix works for you?
comment:47 by , 19 years ago
Thank you.
I tested the date input of "timeline", "due" and "completed" in r3215. The UnicodeEncodeError was fixed.
But new error is occured.
Internal Error 2006년 04월 30일 is not a known date format.
I think that it is similar to #2182
comment:48 by , 19 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Yes, that's another issue then, cmlenz just scheduled it for 0.11, to be part of our i18n effort.
I'll close this one for now (once more :) ).
comment:49 by , 18 years ago
Priority: | high → normal |
---|---|
Resolution: | fixed |
Status: | closed → reopened |
Version: | devel → 0.10.2 |
I am sorry to reopen this ticket but I have an issue with UnicodeDecodeError too with 0.10.2 on Fedora Core 6 (x86-64). I am french and I have used non ascii names for component (at least I suppose I have since I can not see them anymore).
When I upgraded , quite a long time ago, new ticket and roadmap stopped working :
Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 387, in dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.4/site-packages/trac/web/main.py", line 238, in dispatch resp = chosen_handler.process_request(req) File "/usr/lib/python2.4/site-packages/trac/ticket/web_ui.py", line 129, in process_request ticket = Ticket(self.env, db=db) File "/usr/lib/python2.4/site-packages/trac/ticket/model.py", line 37, in __init__ self.fields = TicketSystem(self.env).get_ticket_fields() File "/usr/lib/python2.4/site-packages/trac/ticket/api.py", line 123, in get_ticket_fields options = [val.name for val in cls.select(self.env, db=db)] File "/usr/lib/python2.4/site-packages/trac/ticket/model.py", line 541, in select for name, owner, description in cursor: File "/usr/lib/python2.4/site-packages/trac/db/util.py", line 40, in __iter__ row = self.cursor.fetchone() File "/usr/lib/python2.4/site-packages/trac/db/sqlite_backend.py", line 73, in fetchone return row and self._convert_row(row) or None File "/usr/lib/python2.4/site-packages/trac/db/sqlite_backend.py", line 69, in _convert_row return tuple([(isinstance(v, str) and [v.decode('utf-8')] or [v])[0] File "/usr/lib64/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode bytes in position 1-2: invalid data
When I go in WebAdmin, I can not edit components and when I use trac-admin, it is the same…
Trac [/var/trac/xxx]> component list Command failed: 'utf8' codec can't decode bytes in position 1-2: invalid data Trac [/var/trac/xxx]>
Do you have any idea how I can recover?
comment:50 by , 18 years ago
Milestone: | → 0.10 |
---|---|
Resolution: | → fixed |
Status: | reopened → closed |
(Sorry for the delay)
You have to do some manipulations at the SQLite db level. Delete and replace the faulty components, rename their occurrences in ticket
and ticket_change
tables.
We already discussed about being tolerant with wrongly encoded strings in the database, and jonas vetoed using replacement chars (the rationale being that those errors shouldn't be silently ignored and must be fixed at the db level).
(restoring the fixed status for the 0.10 milestone)
comment:51 by , 17 years ago
Component: | general → plugin/spamfilter |
---|
comment:52 by , 17 years ago
Component: | plugin/spamfilter → general |
---|
This happens to me also, and rolling back to r3022 makes the problem go away.
We generally use the en_GB locale, however removing references to locale in the apache config did not cure the problem for us.