0

I've written a small web-app which pulls data from a simple mysql DB and displays it via Python and Flask. The text fields in the database are encoded as utf8_general_ci, and some contain special characters - for example, 'Zürich'.

As Flask/Jinja2 like to work on unicode, after the query the strings are converted to unicode to be passed into the template. What's weird is I need a different approach to convert to unicode, depending on whether the code is running locally (Mac laptop) or deployed on GAE.

This works when running locally:

return [[unicode(c, encoding='utf-8') if isinstance(c, basestring) else c for c in b] for b in l]

This works when deployed on GAE:

return [[unicode(c, encoding='latin-1') if isinstance(c, basestring) else c for c in b] for b in l]

.

If I run the GAE version locally, 'Zürich' is displayed as 'Zürich'. Vice versa, I get an UnicodeDecode error.

As far as I can tell, the two databases are identical - the online version is a straight dump of the local version.

Tom M
  • 387
  • 1
  • 3
  • 9

1 Answers1

0

ü is the Mojibake for ü.

See "Mojibake" in here for a discussion of the likely causes.

See here for Python notes on what to do in the source code. I don't know about Jinja specifics.

Rick James
  • 135,179
  • 13
  • 127
  • 222