我有以下谷歌应用引擎系统:
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
问题是什么?
答案 0 :(得分:1)
您可能正在将str与unicode对象进行比较,您必须确保它们都是unicode。
这是一个unicode和一个str的例子:
In [11]: type("hello".decode('utf-8'))
Out[11]: unicode
In [12]: type("hello")
Out[12]: str
答案 1 :(得分:1)
告诉python您希望将'論文'
解释为unicode字符串,例如:
if signUp.category == u'論文':
请注意添加的u
。
现在你要将unicode字符串与unicode字符串进行比较,你不会得到那个警告,并且字符串将被评估为相等(当然signUp.category
实际上是“论文”)。
答案 2 :(得分:0)
import hashlib
像这样使用hashlib:
signUp.category = self.request.get('category')
if signUp.category==hashlib.sha1('論文'.encode('utf-8')):