When I migrated slast.zaitcev.us from F14 to F15, I stepped on a small IED. Slasti used UTF-8 as the internal representation of the data, stored in Pyton str type. It worked fine, but as it turned out, by accident. In F15 systemd does not set LANG anymore, and suddenly everything in Slasty blew up.
In the interests of educating myself about Pythonic ways, I switched the internal representation from UTF-8 to unicode type. This mostly worked, but Python defeated me in one place: it appears impossible to use UTF-8 filenames if LANG is not set. If a UTF-8 string is passed as argument of open(), the following happens:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-15: ordinal not in range(128)
This is trivial to reproduce in any shell by "unset LANG". The official answer from Python community is set environment properly. It may even be possible in systemd, or in Apache, but it's ming-boggling that they left no way to open a file with a binary name. The first thing I tried was os.fdopen(os.open()), but that blows up in the same way. There is no sys.open(). Next on the agenda: call a C method.
With all that, I am a little surprised that webapps deployed on Fedora 15 do not blow up left and right. I may be missing something obvious. [Like that perhaps they all store their data in databases, not filesystems. — Ed.]