とても普通に考えて、Content-Type を書き換えてあげればよいはず。
@expose(template="nkm.templates.entry") def entry(self): response.headers['Content-Type'] = "text/xml;charset=UTF-8" return dict(wdg=EntryFormDesc())
ところがこれではダメでして、テンプレートエンジンのKidが勝手に書き換えてしまうらしい(まあテンプレートに依存する部分があるので、仕方ない)。
でもいま作っているテンプレートはHTMLじゃなくて、HTMLの断片なのです。なので、でContentTypeを指定するわけにもいかない。
というわけで、グローバルな設定を変更しました。config/app.cfg に、
kid.encoding="UTF-8"
という行を追加(もともとコメントになっている)。
これで無事、IEでも処理できるようになりました。