gpt4 book ai didi

python - 将 Web 服务与 Python Suds 结合使用时如何修复 unicode 问题

转载 作者:太空狗 更新时间:2023-10-29 21:53:41 25 4
gpt4 key购买 nike

我正尝试在 Commission Junction (CJ) 使用糟糕的网络服务。我可以让客户端连接并从 CJ 接收信息,但他们的数据库似乎包含一堆导致 UnicideDecodeError 的错误字符。

现在我在做:

from suds.client import Client
wsdlLink = 'https://link-search.api.cj.com/wsdl/version2/linkSearchServiceV2.wsdl'
client = Client(wsdlLink)
result = client.service.searchLinks(developerKey='XXX', websiteId='XXX', promotionType='coupon')

这一切正常,直到我达到了类似“CorpNet® 10% Off Any Service”的记录,然后 ® 导致它中断,我得到了

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 758: ordinal not in range(128)" error.

有没有办法在我这边对 ® 进行编码,以便在 SUDS 读取结果时它不会中断?

更新:澄清一下,® 来自 CJ 数据库并在他们的回复中。所以我需要在 SUDS 处理响应之前以某种方式解码非 ascii 字符。我不确定这是如何(或是否)在 SUD 中完成的。

最佳答案

隐式 UnicodeDecodeErrors 是您在尝试添加 str 和 unicode 对象时得到的东西。然后 Python 将尝试将 str 解码为 un​​icode,但使用 ASCII 编码。如果您的 str 包含任何非 ascii 的内容,您将收到此错误。

您的解决方案是像这样手动解码:

thestring = thestring.decode('utf8')

尽可能多地尝试解码任何可能包含非 ascii 字符的字符串,因为它是从您从任何模块获取的,在本例中是泡沫。

然后,如果 suds 无法处理 Unicode(可能是这种情况),请确保在将文本返回给 suds(或任何其他如果您给它 unicode 时会损坏的库)之前对其进行编码。

这应该能很好地解决问题。这可能是一个很大的变化,因为您需要将所有内部处理从 str 转移到 unicode,但这是值得的。 :)

关于python - 将 Web 服务与 Python Suds 结合使用时如何修复 unicode 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com