使用web.py接收post數據時中文變成&#xxxxx;,英文不變,如下所示。
# post處理函數部分代碼
def POST(self):
print '<Handle>post'
webData = web.input()
print webData
if webData:
data = webData.get('data')
print data, type(data)
這裏就需要了解一下HTML的轉義序列(Escape Sequence),即字符實體(Character Entity)。
在HTML中,<
、>
、&
等有特殊含義,不能直接使用,有些字符在ASCII字符集中沒有定義,所以需要使用轉義序列來表示。
轉義序列分成三部分,&
符號(Ampersand),實體(Entity)名稱或#
符號加上實體編號,;
符號(Semicolon)。
如常用的不斷行空白格的實體名稱爲
,實體編號爲 
。
實體名稱便於理解和記憶,但不能保證所有瀏覽器能順利識別,特別是新的實體名稱;實體編號各種瀏覽器都能處理。
在python中,使用如下代碼解決轉義序列問題。
from HTMLParser import HTMLParser
print HTMLParser().unescape('CSDN博客')
於是在接收post的數據後進行解轉義。
# post處理函數部分代碼
def POST(self):
print '<Handle>post'
webData = web.input()
print webData
if webData:
data = webData.get('data')
data = HTMLParser().unescape(data)
print data, type(data)