Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework Amazon SQS消息中的消息字符编码问题_Zend Framework_Amazon Sqs - Fatal编程技术网

Zend framework Amazon SQS消息中的消息字符编码问题

Zend framework Amazon SQS消息中的消息字符编码问题,zend-framework,amazon-sqs,Zend Framework,Amazon Sqs,我对AmazonSQS和Zend(1.11.2)有一个相当令人费解的问题。我正在向我设置的队列发送一条消息,该消息带有一个剪报,如下所示: $sqs->send($queueURL, "opt1=foo opt2=bar"); 该消息进入应用程序的远端,显示为: "opt1%3Dfoo+opt2%3Dbar" 接收应用程序是使用com.xerox.amazonws.sqs2库用Java编写的,目前正在生产中 在Drupal下使用Tarzan的一个旧php模块中,也有类似的发送代码,效果

我对AmazonSQS和Zend(1.11.2)有一个相当令人费解的问题。我正在向我设置的队列发送一条消息,该消息带有一个剪报,如下所示:

$sqs->send($queueURL, "opt1=foo opt2=bar");
该消息进入应用程序的远端,显示为:

"opt1%3Dfoo+opt2%3Dbar"
接收应用程序是使用com.xerox.amazonws.sqs2库用Java编写的,目前正在生产中

在Drupal下使用Tarzan的一个旧php模块中,也有类似的发送代码,效果很好。我上下搜索了Zend、Amazon和Java库的文档,我被卡住了

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

有什么想法吗

Ken(com.xerox.amazonaws)有一个“”选项,在内部使用Base64对消息进行编码。默认情况下,此选项处于启用状态

一般来说,我们发现在使用SQS时,使用Base64编码消息比URL/百分比编码麻烦得多


我将消息文本以PHP为基础,写入队列,Typica将使用默认配置进行解码。

更多信息。Zend是URL编码出站消息和URL解码入站消息。从我所看到的情况来看,Java Typica库没有进行urldecode。泰山PHP库似乎也没有进行ulrencoding。我肯定不知道这些库的互操作性是如何工作的。这很好,但是像Zend Framework这样的工具包在发送消息之前对消息进行URL编码,并对接收到的消息进行URL解码。此行为不是可选的。看来客户端和服务器需要匹配才能工作。Base64或URL编码都是不错的选择,但它们不能互操作。-Ken@KenTypica中的Base64编码/解码是可选的。设置MessageQueue时,请调用q.setEncoding(false),并在阅读消息后自行解码。