【问题标题】:Amazon SQS: can't send messages using python/botoAmazon SQS:无法使用 python/boto 发送消息
【发布时间】:2014-04-08 13:37:04
【问题描述】:

我遇到以下问题:当我使用带有固定字符串作为参数(没有重音字符)的 SQSConnection.send_message 方法时,它按预期工作。但是,当我获得消息正文(使用 get_messages)并尝试再次将其发送到同一个队列时,我收到此错误:

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

这些消息是直接从 Amazon Web 控制台写入的,并且有几个“;”字符和一些重音符号,例如“õ”和“ã”。我该怎么办?我已经按照这里的建议使用 set_message_class(RawMessage)

Using python BOTO with AWS SQS, getting back nonsense characters

但它只适用于接收消息。我使用的是 Ubuntu 12.04,从存储库安装了 python-boto(我认为它是 2.22 版,但不知道如何检查)。

谢谢!!

【问题讨论】:

    标签: python amazon-web-services boto amazon-sqs


    【解决方案1】:

    send_message 只能处理字节串(str 类)。您从 SQS 收到的是一个 Unicode 字符串(unicode 类)。您需要通过调用 encode('utf-8') 将 Unicode 字符串转换为字节字符串。

    如果您有混合的字符串类型,您可能需要有条件地将 Unicode 字符串编码为字节字符串。

        if type(message_body) is unicode:
            message_content = message_body.encode('utf-8')
        else:
            message_content = message_body
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2010-12-12
      • 2017-02-07
      • 2023-03-23
      • 1970-01-01
      相关资源
      最近更新 更多