我知道许多人已经解决了这个问题,但由于某种原因,我无法使用UTF-8编码来处理我的GAE应用程序。我正在从在线表单中检索德语字符串,然后尝试将其存储在Stringproperty中。代码如下:
import from google.appengine.ext import db
import webapp2
class Item(db.Model):
value = db.Stringproperty()
class ItemAdd(webapp2.RequestHandler):
def post(self):
item - Item()
value = str(self.request.get(u'value'))
item.value = value.encode('utf-8')
item.put()
我从中得到的错误是:
File "C:\xxx", line 276, in post
value = str(self.request.get('value'))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 12: ordinal not in range(128)
有人看到我做错了吗?
的更新 的
我正在检索的字符串如下:“Dit iseenlänge” 如果我将属性类型更改为TextProperty一切正常,但我需要能够对其进行过滤,因此这不能解决问题。
答案 0 :(得分:2)
Webapp2负责utf-8。在你的帖子中,webapp2为你提供了一个utf-8 multidict。所以你不必自己动手。使用调试器,您可以在self.request
中找到multidictclass ItemAdd(webapp2.RequestHandler):
def post(self):
Item(value = self.request.POST('value')).put()
要使用utf-8阅读此sblog帖子并且永远不要使用:str()!!!!你的str()从unicode中生成二进制文件 http://blog.notdot.net/2010/07/Getting-unicode-right-in-Python
使用python27,您可以使用以下命令启动代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
答案 1 :(得分:-1)
当你的python脚本接收数据,字符串时,你必须要小心文件的编码与它总是接收的相同,也许你应该把它添加到文件的顶部:
#!/usr/bin/python
# -*- coding: utf-8 -*-