« リタリンの処方が打ち切られた | コメントの書き方( 2007/11/28 改訂) »

パイソンPython

相変わらずいつなんどき何に興味が向くかわけのわからないワタクシ。また最近になってPythonに興味わいてきた。

で、今は何してるかっていうとついさっきまでURLエンコーディングについて考えてた。 URLエンコーディングっていうのはほら、よくWIKIとかGOOGLEとかの類にあるURLの後ろに"%"と英数字がいっぱいついてるやつ。あれのことなんです。 あれは2バイト文字をサーバとかそういうのが解釈できるように符号化したもので、「URLエンコード」でググると、簡単にURLエンコーディングができるサイトがぼろぼろ出てくるです。 でまぁ、Pythonでもできるのかなーってふと気になった。やってみた。ちょっと1週間近くつまづいた挙句にぱっと閃いたら30分くらいで完成した。

http://iso.tank.jp/sandbox/py/urlende.cgiで、エンコードしたい文字列を入力して文字コードを選んで送信すればいいです。 その文字コードで変換したわけのわからない文字列があなたを出迎えてくれます。逆にわけのわからない文字列をわけのわかる普通の単語に戻す(デコードする)こともできます。 この時、変換元の文字コードがわからないとエラーを吐き出すので注意。

エンコードは一行で済んだ。なんかある意味すごいわ。でもUnicodeの扱い方がちょっとよくわからなくて混乱した。

文字列 = urllib.quote_plus(unicode(文字列,'utf-8').encode(文字エンコード),':;/')

urllibっていうのがモジュール。quote_plusっていうのがurllibモジュールについてる関数。unicodeは標準でついてる関数。encodeはメソッド。 あ、日本語のところには変数がはいります。quote_plusの第二引数":;/"はエンコードしない記号。仕様は、 「入力されたUTF-8の文字列をUnicode化し、できあがったそれをユーザーお好みの文字コードに変換し、それをURLエンコードしちゃいなさい?」 となるです。もしUTF-8以外の文字列が入力されると多分エラーを吐き出すかも。HTMLそのものがUTF-8で作られてるから、入力される文字もUTF-8じゃないとおかしいんだけどぬー。

デコードはこう。

文字列 = unicode(urllib.unquote_plus(文字列),文字エンコード).encode('utf-8')

「入力されたURLエンコードされているはずの文字列を普通の文字列に直して、できあがったお好みの文字コードで構成されているはずの文字列をUnicode化し、それをUTF-8に変換しなさい?」 という仕様。だいたい。エンコードもデコードも「はず」という前提で動いてるから、あまり無茶はしてやれない。っていうかデコードも一行で済んでますね。色々すっ飛ばしてるからね。

で、要所要所にちりばめられている「unicode」。まずは、「Unicode」と「UTF-8」は"違うもの"ということを理解する必要があるようです。 よくはわからないけどUnicodeというのは文字コード表そのもの、つまり「文字コード本体」のことで、UTF-8というのは「符号化方式」えーとつまり「変換方法」のこと、みたいな。 結局どういうことかといえば、ある文字コードから他の文字コードに変換したりするのに、いったんUnicode表記にしないと他の文字コードに変換できないっぽいらしいということ。

ENCODE: UTF-8→Unicode→お好み→URL文字列
DECODE: URL文字列→お好み→Unicode→UTF-8

こゆこと。

あと、Pythonは標準でエラー処理について色々と充実している。っぽい。

try:
    文字列 = unicode(urllib.unquote_plus(文字列),符号化方式).encode('utf-8')
except UnicodeError:
    メッセージ = "文字列変換誤り。正しひ符号化方式を指定下さるやう。"

TRY節を実行して、exceptにあるエラー(この場合はUnicodeErrorというエラー)が発生した場合はEXCEPT節を実行する。EXCEPT節はいくらでもいっぱいつくれる。っぽい。 この文の後ろに

except:
    メッセージ = "何だか解りませんが、兎に角御免なさい。"

と書いておくと、UnicodeError以外のエラーは全部このように処理されるという仕組み。うーん面白い。

そんなわけで、http://iso.tank.jp/sandbox/py/urlende.cgiでなんか変なエラーとかでたら教えてほしいのです。よろしく。

2009/12/24追記 URL変えてました。忘れてた。

« リタリンの処方が打ち切られた | コメントの書き方( 2007/11/28 改訂) »

パイソンPython への Writeback

ウブロブランド激安市場  [mail]

2017年9月11日 16時30分

ブラントブランドコピー品
マストな新作アイテム続々入荷中…
長年の豊富な経験と実績を持ち、
ブラントブランドコピー品の完壁な品質を維持するために、
一流の素材を選択し、精巧な作り方でまるで本物のようなな製品を造ります。
高品質の商品を低価格で提供する、納期を厳守することは弊社の経営理念です。
今、マストなブランドコピー新作アイテム続々入荷中…
【シャネルコピー、ヴィトンコピー、コピーグッチ、エルメスコピー】ブランド財布コピー、バッグコピー腕時計コピーぜひおすすめです。
ウブロブランド激安市場 http://www.sbagshop.com/brand-4-copy-0.html

名前:

URLまたはE-Mail:(※リンク表示注意)

コメント:

情報をクッキーに保存する

trackback URI:

http://iso.tank.jp/puroguramu/urlende.tarako

Search

Option

Document

Comment

春よ、来い
05/08 : simuzy
05/08 : simuzy
05/12 : そうこ
10/18 : 前世療法
アイテム詐欺で「再」逮捕
08/12 : Ann Weaver
10/12 : Andrea Gibson
パイソンPython
09/11 : ウブロブランド激安市場

Tackback

リタリンの処方が打ち切られた
03/27 : ノビじいの鬱々日記
foreshortenedプラグイン改造
01/23 : ISO TANK!

Log

2010年
12月
2009年
10月 9月 8月 6月
2008年
11月 10月 9月 6月 4月 2月
2007年
12月 2月 1月
2006年
11月 10月 9月 3月
2005年
10月 9月 7月

Link