Well, to be honest, we *don't*.  If you're using @pecan.expose() and passing a template file, the output is going to be UTF-8 as rendered by Pecan:

https://github.com/dreamhost/pecan/blob/master/pecan/core.py#L518

...and the implementations of the individual template renderers (e.g., Mako and Genshi, which both return Unicode by default).

Otherwise, if you want to circumvent this and return your own response body with a custom encoding, the approach I described above is the same in Python2 vs 3.

All of this said, I actually don't think that I need this PY3-specific block *at all* the more I think about it.  I'm gonna experiment :)