FC2ブログ

スポンサーサイト

-------- --:--:-- --

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Python】マルチバイト文字のバイト数を取得とhttplib2のurlencode

2011-07-06 01:41:47 Wed

参考にさせて頂いたURLを失念してしまいました。。。


unicode型でlen関数を実行すると単純に文字数、
str型でlen関数を実行するとバイト数になります。


str = u"須弥山" #unicode
print len(str) #unicode
print len(str.encode('utf-8')) #str
>>3
>>9

str = "須弥山" #str
print len(str) #str
print len(str.decode('utf-8')) #unicode
>>9
>>3



ちなみにこれを使って何をやりたかっていうと、
httplib2でPOSTするときのContent-Lengthを設定するためにリクエストBODYを計算するためです。
でもそのやり方はあんまり意味なくてurlencodeしたstrをlen関数にいれてlengthとってくればOKでした。



cookie_value = 'NAME=XXXXXXXXXXXXXXXX'
data = {"postName01": "value", "postName02": "value"}
edata = urlencode(data)
size = len(edata)
resp, content = h.request(
"http://localhost:8888/action",
"POST",
body=urlencode(data),
headers={
'Host':'localhost:8888'
,'Cookie':cookie_value
,'Proxy-Connection':'keep-alive'
,'Referer':'http://localhost:8888/'
,'Content-Length':str(size)
,'Cache-Control':'max-age=0'
,'Origin':'http://localhost:8888'
,'User-Agent':'httplib2'
,'Content-Type':'application/x-www-form-urlencoded'
,'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
,'Accept-Encoding':'sdch'
,'Accept-Language':'ja,en-US;q=0.8,en;q=0.6'
,'Accept-Charset':'Shift_JIS,utf-8;q=0.7,*;q=0.3'
}
)



RFC見ながらHTTP通信するのって大変ですね。
とりあえず動けばいいやって思っています…。
スポンサーサイト

⇒comment

Secret

名言集
全記事(数)表示
全タイトルを表示
ブログ内検索
Loading
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。