Is the page html header declaring the utf8 encoding or are using in a
layout that uses a different encoding?

On Jan 19, 7:21 am, Alan Etkin <[email protected]> wrote:
> I found that the Unicode errors are originated because of incompatible
> encodings when web2py tries to read the raw message and render the
> data for browser output. I solved it encoding the RFC822 raw text
> before parsing the response data as Rows. Still i am not sure if this
> is the correct way for processing the response text so it can be sent
> safely (without misread characters) to the user interface. Anyway, it
> seems to work well, without instensive testing.
>
> On 18 ene, 18:40, Alan Etkin <[email protected]> wrote:
>
>
>
>
>
>
>
> > I am trying to generate sqltables with the experimental IMAPAdapter
> > select output, but with some rows, an exception is raised at the
> > sqlhtml module. It has to do with unicode and charsets when sqlhtml
> > processes the rows object returned by the adapter's select method, but
> > I cannot find a proper way of solving it. Here is the error trace:
>
> > Traceback (most recent call last):
> >   File "/home/alan/web2py-hg/gluon/restricted.py", line 204, in
> > restricted
> >     exec ccode in environment
> >   File "/home/alan/web2py-hg/applications/queries/views/default/
> > index.html", line 126, in <module>
> >   File "/home/alan/web2py-hg/gluon/globals.py", line 181, in write
> >     self.body.write(xmlescape(data))
> >   File "/home/alan/web2py-hg/gluon/html.py", line 114, in xmlescape
> >     return data.xml()
> >   File "/home/alan/web2py-hg/gluon/dal.py", line 7442, in xml
> >     return sqlhtml.SQLTABLE(self).xml()
> >   File "/home/alan/web2py-hg/gluon/sqlhtml.py", line 2197, in __init__
> >     ur = unicode(r, 'utf8')
> >   File "/usr/lib/python2.6/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
> > 1227-1229: invalid data
>
> > I found a workaround to avoid the exception but I doubt it's the
> > correct fix, because it just prevents web2py to create the unicode
> > object and use the raw input instead.
>
> > This is the workaround: (gluon/sqlhtml.py Line 2196)
>
> >                     try:
> >                         ur = unicode(r, 'utf-8')
> >                     except UnicodeDecodeError, e:
> >                         ur = r
>
> > Replacing this line:
> >                     ur = unicode(r, 'utf8')
>
> > When creating the Row objects at the adapter, I have to handle
> > different encodings depending on the message. What would be an
> > appropiate way of encoding data before creating the Row objects, so
> > unicode errors can be avoided?
>
> > This is the adapter method i am using to store the parse input for
> > each text field
>
> >     def encode_text(self, text, charset, errors="replace"):
> >         """ convert text for mail to unicode"""
> >         if text is None:
> >             text = ""
> >         else:
> >             if charset is not None:
> >                 text = unicode(text, charset, errors)
> >             else:
> >                 text = unicode(text, "utf-8", errors)
> >         return text
>
> > Thanks
>
> > I am using the last source hg version (1.99.4) with Python 2.6.5 on a
> > Mandriva GNU/Linux machine.

Reply via email to