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 --