Edgewall Software

Opened 8 years ago

Last modified 8 years ago

#12490 closed defect

Genshi UnicodeEncodeError due to a comment link with unicode digits — at Initial Version

Reported by: Jun Omae Owned by:
Priority: normal Milestone: 1.0.12
Component: ticket system Version:
Severity: normal Keywords:
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description

I get a Genshi UnicodeEncodeError while adding comment like comment:123④.

10:32:01 AM Trac[main] WARNING: [192.168.11.11] HTTPInternalError: 500 Trac Error (Genshi UnicodeEncodeError error while rendering template wiki_view.html (unknown template location))

After use_chunked_encoding = true, stacetrace of the error is logged:

...
  File "/venv/py27-1.0/local/lib/python2.7/site-packages/genshi/template/eval.py", line 178, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/src/tracdev/git/trac/ticket/templates/ticket_change.html", line 143, in <Expression u'wiki_to_html(context, change.comment, escape_newlines=preserve_newlines)'>
    ${wiki_to_html(context, change.comment, escape_newlines=preserve_newlines)}
  File "/src/tracdev/git/trac/wiki/formatter.py", line 1586, in format_to_html
    return HtmlFormatter(env, context, wikidom).generate(escape_newlines)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 1541, in generate
    escape_newlines)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 1323, in format
    result = re.sub(self.wikiparser.rules, self.replace, line)
  File "/venv/py27-1.0/lib/python2.7/re.py", line 151, in sub
    return _compile(pattern, flags).sub(repl, string, count)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 1241, in replace
    replacement = self.handle_match(fullmatch)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 1237, in handle_match
    return internal_handler(match, fullmatch)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 611, in _shref_formatter
    return self._make_link(ns, target, match, match, fullmatch)
  File "/src/tracdev/git/trac/wiki/formatter.py", line 664, in _make_link
    return resolver(self, ns, target, escape(label, False))
  File "/src/tracdev/git/trac/ticket/api.py", line 528, in _format_comment_link
    if cnum != 'description' and not ticket.get_change(cnum):
  File "/src/tracdev/git/trac/ticket/model.py", line 451, in get_change
    row = self._find_change(cnum)
  File "/src/tracdev/git/trac/ticket/model.py", line 645, in _find_change
    scnum = str(cnum)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2463' in position 3: ordinal not in range(128)

Change History (0)

Note: See TracTickets for help on using tickets.