使用web.py接收post数据时中文变成xxxx;,英文不变,如下所示。
# post处理函数部分代码
def POST(self):
print '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 'post'
webData = web.input()
print webData
if webData:
data = webData.get('data')
data = HTMLParser().unescape(data)
print data, type(data)
参考资料:
HTML字符实体(Character Entities)…
开头的是什么编码呢。浏览器可以解释它。…