首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python unicode解码错误SUDs

Python unicode解码错误SUDs
EN

Stack Overflow用户
提问于 2010-06-02 05:55:48
回答 1查看 5K关注 0票数 3

好的,我在脚本的顶部使用了# -*- coding: utf-8 -*-,它能够从数据库中提取带有有趣字符的数据(?,‘,é,-,-,’,…)并将数据存储到variables...but中,我还遇到了其他问题,请看我提取数据、组织数据,然后将其转储到变量中,如下所示:

代码语言:javascript
复制
title = product[1]

我的数据库结果集中product[1]的位置

然后我将它加载到Suds中,如下所示:

代码语言:javascript
复制
array_of_inventory_item_submit = ca_client_inventory.factory.create('ArrayOfInventoryItemSubmit')
for product in products:
    inventory_item_submit = ca_client_inventory.factory.create('InventoryItemSubmit')
    inventory_item_list = get_item_list(product)
    inventory_item_submit = [inventory_item_list]
    array_of_inventory_item_submit.InventoryItemSubmit.append(inventory_item_submit)
#Call that service baby!
ca_client_inventory.service.SynchInventoryItemList(accountID, array_of_inventory_item_submit)

其中get_item_listproduct[1]设置为title和(包括一大堆其他节点):

代码语言:javascript
复制
inventory_item_submit.Title = title

所以一切运行正常,直到我调用包含array_of_inventory_item_submit的ca_client_inventory.service.SynchInventoryItemList,它包含标题w/时髦的char...here是错误的:

代码语言:javascript
复制
Traceback (most recent call last):
  File "upload_all_inventory_ebay.py", line 421, in <module>
    ca_client_inventory.service.SynchInventoryItemList(accountID, array_of_inventory_item_submit)
  File "build/bdist.macosx-10.6-i386/egg/suds/client.py", line 539, in __call__
  File "build/bdist.macosx-10.6-i386/egg/suds/client.py", line 592, in invoke
  File "build/bdist.macosx-10.6-i386/egg/suds/bindings/binding.py", line 118, in get_message
  File "build/bdist.macosx-10.6-i386/egg/suds/bindings/document.py", line 63, in bodycontent
  File "build/bdist.macosx-10.6-i386/egg/suds/bindings/document.py", line 105, in mkparam
  File "build/bdist.macosx-10.6-i386/egg/suds/bindings/binding.py", line 260, in mkparam
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 62, in process
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 75, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 102, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 243, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 182, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 75, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 102, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 298, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 182, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 75, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 102, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 298, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 182, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 75, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 102, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 243, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 182, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/core.py", line 75, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 102, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/mx/appender.py", line 198, in append
  File "build/bdist.macosx-10.6-i386/egg/suds/sax/element.py", line 251, in setText
  File "build/bdist.macosx-10.6-i386/egg/suds/sax/text.py", line 43, in __new__
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 116: ordinal not in range(128)

这次又是什么?我猜我的脚本可以接受这些时髦的字符,因为我在顶部有# -*- coding: utf-8 -*-,但Suds在其文件的顶部没有它。我真的想去更改Suds files...we吗?我知道这是我所能做的最不受欢迎的最后一种solution...what了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-02 06:42:30

#-*- coding: xxx -*-与此错误无关,它只适用于声明它的源文件的编码,而不适用于来自数据库的变量的内容。

您的错误说明您试图将包含非ASCII码字符的str类型对象传递给unicode()构造函数(在line 43 of suds/sax/text.py调用)。

您必须将来自数据库的字符串转换为unicode对象;例如,如果您的数据库是以UTF-8编码的:

代码语言:javascript
复制
title = product[1].decode("UTF-8")

有关详细信息,请参阅str.decode()文档。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2953651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档