Python unicode解码错误SUD

Kac*_*ser 3 python unicode suds

好吧,所以我# -*- coding: utf-8 -*-在我的脚本的顶部,它的工作原理是能够从数据库中提取有趣的字符(Ñ,Õ,é, - , - ,',...)并将数据存储到变量中. ..但我遇到了其他问题,看到我提取数据,组织它,然后将其转储到如下变量中:

title = product[1]
Run Code Online (Sandbox Code Playgroud)

product[1]我的数据库结果集在哪里

然后我把它加载到Suds就像这样:

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)
Run Code Online (Sandbox Code Playgroud)

get_item_list设置product[1]所有权和(包括一大堆其他节点的):

inventory_item_submit.Title = title
Run Code Online (Sandbox Code Playgroud)

所以一切运行正常,直到我调用array_of_inventory_item_submit包含标题w/the funky char的ca_client_inventory.service.SynchInventoryItemList ...这里是错误:

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)
Run Code Online (Sandbox Code Playgroud)

怎么办?我的猜测是我的脚本可以接受这些时髦的字符,因为我有# -*- coding: utf-8 -*-顶部但是Suds没有在它的文件顶部.我是否真的想去改变Suds文件...我们都知道这是最不可取的最后可能的解决方案......我该怎么办?

Lup*_*uch 10

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

您的错误表明您尝试将str包含非ASCII字符的类型对象传递给unicode()构造函数(在suds/sax/text.py的第43行调用).

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

title = product[1].decode("UTF-8")
Run Code Online (Sandbox Code Playgroud)

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