gpt4 book ai didi

python - 使用 python suds 从 Web 服务响应时出现 Unicode 错误

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:19 25 4
gpt4 key购买 nike

我已经看过有关此问题的其他帖子,但没有看到对我有帮助的答案。

我的问题与上一篇文章中使用“CJ 糟糕的网络服务”的人非常相似。

我正在使用 python 2.5 和 suds 库(版本 0.4.1)。我通过 Web 服务从数据库请求一些记录。然后我尝试打印返回记录的一些字段。这些记录的某些标题包含导致异常的字符。我得到的异常(exception)是:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u201d' in position 39: ordinal not in range(128)

我的代码如下所示:(sr 是服务请求,是我从数据库检索的记录类型)

response = client.service.QuerySRByExample(input_data)
for sr in response:
print sr.SRNumber, sr.Title

如果我使用 ord() 循环遍历有问题的标题,我可以看到有一些双引号字符的代码点为 8220 和 8221。这些就是导致错误的原因(第一个双引号位于位置标题字符串的 39,根据错误消息。)

... 114 111 108 108 101 114 32 65 8221 32 43 32 8220 68 67 78 ...

如果我改用

    print sr.SRNumber, sr.Title.encode('ascii', 'ignore')

我没有收到错误信息。它只是删除有问题的字符(任何代码点 > 127 的字符)。

有没有更好的方法来处理这个问题?看来我应该能够以某种方式将 utf-8 双引号转换为 ascii 双引号。

网络服务表示它正在使用 utf-8 编码。从网络服务返回的响应的第一部分是:

 <?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

在另一个线程中,一位用户说他在 suds 代码中发现了一些东西并且能够修复它。我不知道它是否已合并到 suds 库中。

任何帮助将不胜感激。

最佳答案

只是打印失败。如果您的终端可以处理 utf-8(Mac 和最新的 Linux),则 print sr.Title.encode("utf-8") 应该可以工作。在 Windows 上,我认为您可以尝试使用系统代码页(可能是 cp1252)进行编码 - 但它可能没有必要的字符。

升级到较新版本的 Python 可能会有所帮助。在 2.6 和 2.7 中,我可以打印出 unicode 字符,而无需执行任何特殊操作。

关于python - 使用 python suds 从 Web 服务响应时出现 Unicode 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217024/

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