UTF-8での文字列の表示
今回のソースはすべてUTF-8で書いています。UTF-8で保存するだけでなく、ファイルの先頭に
# -*- coding: utf-8 -*-
と書くことでUTF-8対策は万全!らしいのですが…なぜかエラーが出ます。
今回は入力された文字列をURLエンコード(%80%E0みたいなやつ)して変数に格納するのとそれをデコードする部分を作っていたんですが、いざデコードした文字列を表示するたびに
A server error occurred. Please contact the administrator.
という表示に悩まされていました。
悩んでいても仕方ないので検索してみたところ、かせきのうさぎさん(http://d.hatena.ne.jp/itasuke/20080703)のエントリの中で見つけました。
content = urllib.unquote(article.content).encode('raw_unicode_escape').decode('utf-8') self.response.out.write ("%s" % content )
確かに二重変換なのでパッと見よくわからないコードになってしまいますが、今のところはライブラリに手を入れるのではなくて、こちらのコードで対応してみたところ、エラーもなく無事にデコードできました。
入力した文字列をURLエンコードする場合は、
import urllib content = urllib.quote(article.content.encode('utf-8'))
といった具合に urllib にある quote を使うことによってエンコードすることができます。