【问题标题】:Python SUDS - problem with sending a message encoded not in UTF-8Python SUDS - 发送非 UTF-8 编码的消息的问题
【发布时间】:2010-06-09 14:15:03
【问题描述】:

我需要发送一个带有以“iso-8859-2”编码的字符串的 SOAP 消息(使用 Python SUDS)。 有人知道怎么做吗?

当我使用“iso-8859-2”编码的参数调用客户端上的方法时,SUDS 引发以下异常:

File "/home/bartek/myenv/lib/python2.5/site-packages/suds/sax/text.py", line 43, in __new__
   result = super(Text, cls).__new__(cls, *args, **kwargs)

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 10: ordinal not in range(128)

【问题讨论】:

    标签: python django soap web-services suds


    【解决方案1】:
    Text = Text.decode('iso-8859-2')
    

    如果 Text 以使用 iso-8859-2 编码的 8 位字符串开头,则可能就是您所需要的。但是,如果它需要以 UTF-8 字符串或其他形式发送,那么您可能需要使用

    Text = Text.decode('utf-8')
    

    如果两者都不是,那么只需使用 decode()encode() 方法以及与它们一起使用的错误处理方法:http://docs.python.org/release/2.5/lib/string-methods.html

    (考虑到问题的内容,删除了我的答案中大部分不必要的内容。)

    【讨论】:

    • 不应该反过来吗? Text.decode('iso-8859-2').encode('utf-8')?
    • 不,它不适用于 SUDS。 suds/sax/text.py 将给出的字符串作为 SOAP 参数并在其上调用 unicode()。 Unicode() 然后引发异常。尝试: unicode('ą'.decode('iso-8859-2').encode('utf-8')) 我认为更有可能存在一些可以将 UTF 更改为 ISO-8859-2 的 SUDS 设置。
    • @bartekb:好吧。我以前没有用过 SUDS,所以我真的帮不了你。
    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2017-03-02
    相关资源
    最近更新 更多