Google 应用引擎:从表单中获取字符串
Google app engine: get string from a form
我有以下 google 应用引擎系统:
model.py:
# -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
class SignUp(ndb.Model):
...
category = ndb.StringProperty()
...
html:
<meta charset="utf-8">
...
<form ...>
...
<input type=radio name=category value=論文>論文
...
main.py:
# -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
...
signUp = SignUP()
...
signUp.category = self.request.get('category')
if signUp.category=='論文':
...
上面单选输入的值为汉字。当 运行 时,我收到有关 if
语句的错误消息:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
问题是什么?
您可能正在将 str 与 unicode 对象进行比较,您必须确保它们都是 unicode。
这是 unicode 和 str 的示例:
In [11]: type("hello".decode('utf-8'))
Out[11]: unicode
In [12]: type("hello")
Out[12]: str
告诉python您希望'論文'
被解释为unicode字符串,例如:
if signUp.category == u'論文':
注意添加的 u
.
现在你将一个 unicode 字符串与一个 unicode 字符串进行比较,你不会得到那个警告,并且字符串将评估为相等(当 signUp.category
实际上是“论文”时,当然).
import hashlib
像这样使用 hashlib:
signUp.category = self.request.get('category')
if signUp.category==hashlib.sha1('論文'.encode('utf-8')):
我有以下 google 应用引擎系统:
model.py:
# -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
class SignUp(ndb.Model):
...
category = ndb.StringProperty()
...
html:
<meta charset="utf-8">
...
<form ...>
...
<input type=radio name=category value=論文>論文
...
main.py:
# -*- coding: utf-8 -*-
#!/usr/bin/env python2.7
...
signUp = SignUP()
...
signUp.category = self.request.get('category')
if signUp.category=='論文':
...
上面单选输入的值为汉字。当 运行 时,我收到有关 if
语句的错误消息:
UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
问题是什么?
您可能正在将 str 与 unicode 对象进行比较,您必须确保它们都是 unicode。
这是 unicode 和 str 的示例:
In [11]: type("hello".decode('utf-8'))
Out[11]: unicode
In [12]: type("hello")
Out[12]: str
告诉python您希望'論文'
被解释为unicode字符串,例如:
if signUp.category == u'論文':
注意添加的 u
.
现在你将一个 unicode 字符串与一个 unicode 字符串进行比较,你不会得到那个警告,并且字符串将评估为相等(当 signUp.category
实际上是“论文”时,当然).
import hashlib
像这样使用 hashlib:
signUp.category = self.request.get('category')
if signUp.category==hashlib.sha1('論文'.encode('utf-8')):