I am coverting a J2EE application over to django. The existing app uses Textile as a simple markup for user text input. After installing pytextile (which is under ownership change at the moment), I found a problem using it: The "textile" filter works for strings and strings retrieved from my database, but when I try to use it on a piece of string that I received from a web form, it blew up with an encoding error. This is the issue:
Django nicely uses unicode string internally. When Django receive a string from a web form, it converts it from the browser encoding (utf8) to unicode.
pytextile expects the string to be in either the system default encoding, or when called in the filter, with the Django default charset (usually utf-8).
In my case pytextile choked on its own glyphs replacement code when trying to do a replace of latex style quotes on the string.
The solution is to convert the unicode string from forms input back to utf-8 first before giving it to pytextile:
for_textile_str = my_form_input_str.encode('utf8') print textile(for_textile_str) # will now work.
According to this webpage, I quote:
A couple of weeks I announced that I was looking for a new maintainer for pytextile, since I'm way too involved with my research and pydap. Well, as of today Silas Sewell is the new maintainer of pytextile.