2016-07-24 136 views
0

我的C++桌面应用程序是发布数据到我与charset=UTF-8格式(在我的HTTP请求报头中指定)服务器。我的PHP脚本分析发布的数据没有正确读取_POST处理UTF-8格式发布数据

我的脚本是否需要手动解码发布的数据?我想如果HTTP POST请求指定了字符集,脚本/ PHP会自动找出它?

foreach($_POST as $key => $value) 
{ 
    $contents .= $key . ", " . $value . "\r\n"; 
} 

// contents = n, J o h n D o e 
// when it should = name, John Doe\r\nuserid, hithere\r\n 

回答

0

我想如果HTTP POST请求指定的脚本/ PHP会自动计算出来的字符集?

否,字符编码的下层。首先,您需要让PHP知道您发送数据的内容类型。

检查manual on $_POST,它说:

传递给经由HTTP POST方法当前脚本变量的数组使用application/x-www-form-urlencodedmultipart/form-data或作为在请求中的HTTP内容类型时。

对于HTTP文件上传,您可以使用后者,作为其他“常规”表单数据(文本字段,基本上是发送字符串数据的任何东西)第一个。

,当然你的脚本将需要发送根据所选择的内容类型编码的数据。无论你使用的是什么HTTP库,都应该提供处理它的方法;如果你不确定的话,我会建议你看一下docuentation。


只要模拟HTML表单,这就是实现它的方法。如果这不是你的目标,你的另一个选择是发送你选择的任何格式的编码数据,比如f.e. JSON(或者甚至可能根本没有用任何特殊的方式处理),然后使用file_get_contentsphp://input流包装器读取原始输入。

+0

我的C++应用还指定内容类型在标题为'内容 - 类型:应用程序/ x-WWW的形式urlencoded'。表单数据只是'name = John + Doe&userid = hithere'。我试过'utf8_decode($ key)'但没有运气,结果相同。你能指出我正确的方向来解码/处理UTF-8格式吗? –

+0

服务器日志说什么?你确定你正在发布POST请求吗? – CBroe