I see. I think the problem is only with response.flash within Ajax
components. The message is escaped on the server via urllib2.quote, and
then decoded in the browser via decodeURIComponent (see source
code<http://code.google.com/p/web2py/source/browse/applications/welcome/static/js/web2py.js#100>
):
jQuery('.flash').html(decodeURIComponent(flash)).slideDown();
The problem is that if there are any ascii encodings in flash,
decodeURIComponent seems to expect a valid URI and throws an error
otherwise, which is what is happening when the unicode characters are
included. A previous version of web2py.js did the escaping in Javascript on
the client side, but with the same effect.
A fix might be to use xmlescape() to do any escaping on the server side
(which is effectively the same as the escaping of a regular flash message),
and then don't do any escaping or decoding on the client side -- so the
above line would change to:
jQuery('.flash').html(flash).slideDown();
To do the server-side escaping, I think we can change line
552<http://code.google.com/p/web2py/source/browse/gluon/main.py#552>in main.py
from:
urllib2.quote(str(response.flash).replace('\n',''))
to:
xmlescape(response.flash).replace('\n','')
(Would also have to import xmlescape from html.py.)
Anthony
--