Opened 11 years ago

Last modified 4 years ago

#2610 new defect

problems with unicode chars

Reported by: haf@… Owned by:
Priority: normal Component: CacheSystemPlugin
Severity: major Keywords:
Cc: Trac Release: 0.10


Using unicode chars, the feature does reply with an overall error (see below). In an existing page this is a show-stopper, because the error does not point to the page or char which is malicious. How can I find out which one is the bad unicode character to remove it eventually? Or could unicode support be added to the feature?

Trac[__init__] ERROR: Keys must be str()'s, notunicode.  Convert your unicode strings using  mystring.encode(charset)!
Traceback (most recent call last):
  File "/var/lib/python-support/python2.4/trac/web/", line 387, in dispatch_request     dispatcher.dispatch(req)
  File "/var/lib/python-support/python2.4/trac/web/", line 191, in dispatch     chosen_handler = self._pre_process_request(req, chosen_handler)
  File "/var/lib/python-support/python2.4/trac/web/", line 263, in _pre_process_request     chosen_handler = f.pre_process_request(req, chosen_handler)
  File "build/bdist.linux-i686/egg/cachesystem/", line 40, in pre_process_request 
  File "/usr/lib/python2.4/site-packages/python_memcached-1.40-py2.4.egg/", line 619,  in get check_key(key)
  File "/usr/lib/python2.4/site-packages/python_memcached-1.40-py2.4.egg/", line 878, i n check_key raise Client.MemcachedStringEncodingError, ("Keys must be str()'s, not"
MemcachedStringEncodingError: Keys must be str()'s, notunicode.  Convert your unicode strings using mystring.encode(charset)!

Attachments (0)

Change History (3)

comment:1 Changed 11 years ago by anonymous

Component: TracHacksCacheSystemPlugin
Owner: changed from Alec Thomas to Noah Kantrowitz

comment:2 Changed 6 years ago by gonzalob@…

I had the same issue. Fixed it in a non-elegant way, but this ticket has 5 years open so that'll have to do.


    3333    # IRequestFilter methods
    3434    def pre_process_request(self, req, handler):
     35    key = req.path_info.encode('ascii')
    3536        if isinstance(handler, WikiModule):
    3637            if req.method == 'GET' and \
    3738               req.args.get('action', 'view') == 'view' and \
    3839               req.args.get('format') is None and \
    3940               req.args.get('version') is None:
    40                 page = self.client.get(req.path_info)
     41                page = self.client.get(key)
    4142                if page is not None:
    4243                    self.log.debug('CacheFilter: Cache hit on %s', req.path_info)
    4344                    req.__CACHED_PAGE = page
    4546                else:
    4647                    req.__PLEASE_CACHE = True
    4748            elif req.method == 'POST':
    48                 self.client.delete(req.path_info)
     49                self.client.delete(key)
    5051        return handler
    5253    def post_process_request(self, req, template, content_type):
    5354        try:
    5455            if req.__PLEASE_CACHE:
    55                 self.client.set(req.path_info, req.hdf.getObj('wiki').writeString(), self.timeout)
     56                self.client.set(req.path_info.encode('ascii'), req.hdf.getObj('wiki').writeString(), self.timeout)
    5657        except AttributeError:
    5758            pass
    5859        return template, content_type
    6970        req.hdf.copy('wiki', wiki_hdf.hdf)
    7071        return 'wiki.cs', None
    73  No newline at end of file

comment:3 Changed 4 years ago by Ryan J Ollos

Owner: Noah Kantrowitz deleted

Modify Ticket

Change Properties
Set your email in Preferences
as new The ticket will remain with no owner.

Add Comment

E-mail address and name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.