亚马逊SQS消息中的消息字符编码问题

时间:2011-02-16 23:02:41

标签: zend-framework amazon-sqs

我对Amazon SQS和Zend(1.11.2)有一个相当令人费解的问题。我正在向我已经设置的队列发送一条消息,其中包含一个如下所示的剪辑:

$sqs->send($queueURL, "opt1=foo opt2=bar");

该消息进入远端的应用程序,并被视为:

"opt1%3Dfoo+opt2%3Dbar"

接收应用程序是使用com.xerox.amazonws.sqs2库用Java编写的,现在正在生产中。

在较旧的php模块中有类似的发送代码,在Drupal下使用Tarzan工作得很好。我已经搜索了高低,并阅读了Zend,Amazon和Java库的文档,我被困住了。

字符串的编码是可以理解的,但我不认识正在使用的方法。进一步的测试显示单引号,尖括号等也以十六进制的形式转义。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Typica(com.xerox.amazonaws)有一个“encoded”选项,内部使用Base64对邮件进行编码。默认情况下处于启用状态。

通常,我们发现使用Base64编码邮件比使用SQS时的URL /百分比编码要麻烦。

我会在PHP中使用消息文本Base64,将其写入队列,而Typica应该使用默认配置进行解码。