pythonでutf-8日本語文字列を、URIエンコード・URLデコードする

pythonでutf-8日本語文字列を、URIエンコード・URLデコードする


 '全力HP' ← → %E5%85%A8%E5%8A%9BHP

 Pythonで上のような変換をやりたいときの覚書。


utf-8文字列のURLエンコード


 utf-8文字列 txt: '全力HP'
urllib2.quote(txt.encode("utf-8"))
 URLエンコード済み文字列 :  %E5%85%A8%E5%8A%9BHP
 


URLエンコード済み文字列をutf-8に戻す(URLデコード)


 URLエンコード済み文字列  enc_txt: %E5%85%A8%E5%8A%9BHP
urllib2.unquote(enc_txt).encode('raw_unicode_escape').decode('utf-8')
 utf-8文字列: '全力HP' 
 サンプルコードをつけたかったが、printなどで表示するためにはunicodeに変換して、えーと、とか考えていたらワケがわからなくなったので、とりあえず現時点でわかっていることだけをメモしておくことにしよう。

 いちおう図に描いてみたが、今扱っている文字列がunicodeなのかutf-8なのかが、私にはいまいちわからない。図からすると、unicodeをわざわざutf-8に変換しなくても直接URLエンコードすればいいような気もする。ソースコードをutf-8で記述していることにも関係してくるのだろうか。どうも、何か根本的な知識が私には欠けている気がしてきた。
 なお、クッキーに日本語を保存したかっただけだったのだが、色々調べたり試したりした結果、ようやくURLエンコードすれば日本語もクッキーに保存出来る、というところまでたどり着いたのだった。ものすごく時間がかかったけども、ほんのちょっぴり前進したので、まあよしとしよう。