python – 如何在Google App Engine数据存储区中存储非ASCII字符
发布时间:2020-12-20 11:18:35 所属栏目:Python 来源:网络整理
导读:我已经尝试了不少于5种不同的“解决方案”,我无法让它工作,请帮助. 这是错误 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) Traceback (most recent call last): File "/base/python_runtime/python_lib/versions/1/googl
我已经尝试了不少于5种不同的“解决方案”,我无法让它工作,请帮助.
这是错误 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) Traceback (most recent call last): File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/__init__.py",line 636,in __call__ handler.post(*groups) File "/base/data/home/apps/elmovieplace/1.350096827241428223/script/pftv.py",line 114,in post movie.put() File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/db/__init__.py",line 984,in put return datastore.Put(self._entity,config=config) File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",line 455,in Put return _GetConnection().async_put(config,entities,extra_hook).get_result() File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py",line 1219,in async_put for pbs in pbsgen: File "/base/python_runtime/python_lib/versions/1/google/appengine/datastore/datastore_rpc.py",line 1070,in __generate_pb_lists pb = value_to_pb(value) File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",line 239,in entity_to_pb return entity._ToPb() File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore.py",line 841,in _ToPb properties = datastore_types.ToPropertyPb(name,values) File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py",line 1672,in ToPropertyPb pbvalue = pack_prop(name,v,pb.mutable_value()) File "/base/python_runtime/python_lib/versions/1/google/appengine/api/datastore_types.py",line 1485,in PackString pbvalue.set_stringvalue(unicode(value).encode('utf-8')) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128) 这是代码中给我带来问题的部分. if imdbValues[5] == 'N/A': movie.diector = '' else: movie.director = imdbValues[5] ... movie.put() 在这种情况下,imdbValues [5]等于ClaudioF?¤h 解决方法
这行代码引发了异常:
pbvalue.set_stringvalue(unicode(value).encode('utf-8')) 将值传递给movie.director时,该值首先在unicode中转换为: unicode(value) 然后用encode编码(‘utf-8’). unicode()函数使用ASCII作为默认解码编码;这意味着只有通过这些价值才能安全: >一个unicode字符串 您的代码可能正在传递带有某些编码的字节字符串,而unicode(value)无法以ASCII格式解码. 建议: 如何解决: movie.director = imdbValues[5].decode('utf-8') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |