Maybe I am missing something, but it seems to me that utf8 output is not enforced, and trac uses utf-8 output only (as of 0.9b2). So if the system's locale encoding is set to e.g.: LATIN2 (iso8859_2), then on the wikipage we see unknown characters represented as "?", because the time.strftime() with %B returns locale specific characters in the locale's encoding.
example: "october" in my language with latin2 (default encoding) is "október" (chr 162, 0xf3 in unicode)
I am not familiar with python, so I could only solve this by replacing the return statement with
return unicode(table, "iso8859_2").encode("utf8")
but that isn't universal solution, because for Japanese I have to write
return unicode(table, "shift_jis").encode("utf8")