Flaskでsjis対応のページを作成する方法

FlaskでUTF-8以外(例えばsjis)のサイトを作成するための自分メモを以下、羅列

  • after_request内でresponse.dataの内容を変換
  • response.headers.addでresponse_headerを適切なものに設定
  • sys.setdefaultencoding('sjis') でdefaultencodingをsjisに設定
    • スクリプト内でdefaultencodingを設定する場合はsysパッケージをreloadすること
    • あまり良くない方法みたいだけども(´・ω・`)
  • flaskファイル、templateともにutf-8でOK
例えばこんなふう?サンプル
@app.after_request
def convert_sjis(response):
    reload(sys)
    sys.setdefaultencoding('sjis')                                              
    response.headers.add('Content-Type', 'text/html; charset=shift_jis')
    response.data = response.data.decode('utf8').encode('sjis')
    return response

これで携帯サイトをFlaskで作れるようになった(`・ω・´)


参考:ぎじゅっやさん