Re: [patch] UnicodeDecodeError in tools.Replacer.replace with non-ascii characters
will <[email protected]> Tue, 07 Jul 2009 13:33:56 -0400
| Newsgroups | gmane.comp.web.pyblosxom.devel |
|---|---|
| Message-ID | <[email protected]> |
Hrm... I think the better fix is to change _VAR_REGEXP from unicode to a regular string. One of the efforts for PyBlosxom 1.5 is to make the lifecycle use utf-8 encoded strings across the board. If you take the u out of the _VAR_REGEXP, does that fix the issue, too? Andrey Bondarenko wrote: > Hi, > > I have troubles with pyblosxom 1.5-r1330 deployed in Apache 2.2 with > ModWSGI. I’m writing entries in utf-8 with rst plugin. Config.py > contains py["blog_encoding"] = "utf-8". But when I’m trying to access > my blog I get the error: > > mod_wsgi (pid=504): Exception occurred processing WSGI script > '.../apps/blog-ups/pyblosxom.wsgi'. > Traceback (most recent call last): > File "...\\Pyblosxom\\pyblosxom.py", line 446, in __call__ > return [self.run_pyblosxom(env, start_response)] > File "...\\Pyblosxom\\pyblosxom.py", line 438, in run_pyblosxom > p.run() > File "...\\Pyblosxom\\pyblosxom.py", line 163, in run > blosxom_handler(self._request) > File "...\\Pyblosxom\\pyblosxom.py", line 916, in blosxom_handler > renderer.render() > File "...\\Pyblosxom\\renderers\\blosxom.py", line 313, in render > content = self.renderContent(self._content) > File "...\\Pyblosxom\\renderers\\blosxom.py", line 257, in renderContent > outputbuffer.append(self.renderTemplate(vars, "story", override=1)) > File "...\\Pyblosxom\\renderers\\blosxom.py", line 361, in renderTemplate > finaltext = tools.parse(self._request, entry, template) > File "...\\Pyblosxom\\tools.py", line 458, in parse > return _VAR_REGEXP.sub(replacer.replace, template) > UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: > ordinal not in range(128) > > I think, the cause of error is forced conversion to string in > tools.Replacer.parse. _VAR_REGEXP is Unicode so, sub() have to > convert values returned by tools.Replacer.parse back from string to > Unicode. Because my data is in utf-8 default acsii codec can’t do the > conversion. > > I was able to get pyblosxom working with the patch: > > Index: Pyblosxom/tools.py > =================================================================== > --- Pyblosxom/tools.py (revision 1330) > +++ Pyblosxom/tools.py (working copy) > @@ -429,12 +429,9 @@ > # functions took no arguments > r = r() > > - # convert non-strings to strings > - if not isinstance(r, str): > - if isinstance(r, unicode): > - r = r.encode(self._encoding) > - else: > - r = str(r) > + # convert strings to unicode > + if isinstance(r, str): > + r = unicode(r, self._encoding) > > return r > > > Best regards, > Andrey V. Bondarenko > > > ------------------------------------------------------------------------------ > Enter the BlackBerry Developer Challenge > This is your chance to win up to $100,000 in prizes! For a limited time, > vendors submitting new applications to BlackBerry App World(TM) will have > the opportunity to enter the BlackBerry Developer Challenge. See full prize > details at: http://p.sf.net/sfu/blackberry > _______________________________________________ > Pyblosxom-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/pyblosxom-devel ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/blackberry _______________________________________________ Pyblosxom-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/pyblosxom-devel