gae python ascii编解码器无法解码字节2
当我试图在Google App Engine中的数据库中存储信息时,我遇到了这个错误gae python ascii编解码器无法解码字节2,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,当我试图在Google App Engine中的数据库中存储信息时,我遇到了这个错误 Traceback (most recent call last): File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 1536, in __call__ rv = self.handle_exception(request, response, e) Fi
Traceback (most recent call last):
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 1536, in __call__
rv = self.handle_exception(request, response, e)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 1530, in __call__
rv = self.router.dispatch(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 1102, in __call__
return handler.dispatch()
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.5.1/webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "/base/data/home/apps/s~nothing-but-net/1.360803849981021046/main.py", line 460, in get
blchrlinks(True, a)
File "/base/data/home/apps/s~nothing-but-net/1.360803849981021046/main.py", line 282, in blchrlinks
b.put()
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/ext/db/__init__.py", line 1074, in put
return datastore.Put(self._entity, **kwargs)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 579, in Put
return PutAsync(entities, **kwargs).get_result()
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 556, in PutAsync
return _GetConnection().async_put(config, entities, local_extra_hook)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/datastore/datastore_rpc.py", line 1552, in async_put
pbs = [self.__adapter.entity_to_pb(entity) for entity in entities]
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 344, in entity_to_pb
return entity._ToPb()
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore.py", line 1025, in _ToPb
properties = datastore_types.ToPropertyPb(name, values)
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore_types.py", line 1745, in ToPropertyPb
pbvalue = pack_prop(name, v, pb.mutable_value())
File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/datastore_types.py", line 1556, in PackString
pbvalue.set_stringvalue(unicode(value).encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 57: ordinal not in range(128)
您正试图使用ASCII编解码器解码非ASCII字符。您需要知道输入字符是如何编码的
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 57: ordinal not in range(128)
与流行的观点相反,二进制数据没有内在的意义。它只有作者指定的含义。听起来像是有unicode编码错误,但您没有足够的信息来帮助找出问题所在 有两件事需要尝试 1.
#-*-编码:utf-8-*-
,位于进行调用的文件顶部(如果文件中有unicode,例如☃ 或€
2.)确保将unicode发送到db而不是str。否则会发生这种情况
>>> x = eval("'Capit\\xc3\\xa1n\\n'")
>>> x
'Capit\xc3\xa1n\n'
>>> x[5]
'\xc3'
>>> len(x[5])
1
如您所见,它将多位unicode转换为\xc3\xa1n,转换为2个字符,第一个字符超出了ascii生成的范围,因为它是utf-8编码位之一(这就是为什么普通ascii主要在utf-8中工作)
但是,请提供更多信息,我们可以查看。您似乎误解了它的工作原理。你把所有相关信息和问题都放在问题框中,我们用它来回答问题。目前,您既没有所有相关信息,也没有问题。可能的副本