トップページ> "> 開発 "> Python

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エンコードすれば日本語もクッキーに保存出来る、というところまでたどり着いたのだった。ものすごく時間がかかったけども、ほんのちょっぴり前進したので、まあよしとしよう。

  はてなブックマーク - pythonでutf-8日本語文字列を、URIエンコード・URLデコードする この記事にTwitterでつぶやく このページをはてなブックマーク
次のpythonで一意なIDを自動生成するへ
トップページ> "> 開発 "> Python もくじ