I guess the reason is base64
decoding issue, as boto uses base64
for messages encoding and decoding. You can try to use get_body_encoded
method:
print message.get_body_encoded()
Other option is convert to RawMessage:
from boto.sqs.message import RawMessage
q.set_message_class(RawMessage)
Update
Yes it is, it became clear with your test case:
>>> print 'hello this is a test'.decode('base64')
??e??b?+??-