Google应用引擎:从表单中获取字符串

时间:2015-03-26 08:27:13

标签: python google-app-engine unicode

我有以下谷歌应用引擎系统:

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

问题是什么?

3 个答案:

答案 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')):