我的c ++桌面应用程序使用charset=UTF-8
格式(在我的HTTP请求标头中指定)将数据发布到我的服务器。我的PHP脚本分析发布的数据没有正确读取_POST
。
我的脚本是否需要手动解码发布的数据?我想如果HTTP post请求指定了charset脚本/ 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 :(得分:0)
我想如果HTTP post请求指定了charset脚本/ php将自动解决它?
不,字符编码是较低层。首先,您需要让PHP了解您要发送数据的Content-Type。
检查manual on $_POST,它说:
在请求中使用
application/x-www-form-urlencoded
或multipart/form-data
作为HTTP Content-Type时,通过HTTP POST方法传递给当前脚本的关联变量数组。
对于HTTP文件上传,您将使用后者,其他“普通”表单数据(文本字段,基本上发送字符串数据的任何内容)是第一个。
当然,您的脚本必须根据所选的Content-Type发送编码的数据。无论你使用什么HTTP库,都应该提供处理它的方法;如果您不确定,我建议您查看文档。
就模拟HTML表单而言,这将是这样做的方法。如果这不是您的目标,那么您的另一个选择是发送以您选择的任何格式编码的数据,例如f.e. JSON(或者甚至可能没有任何特殊方式处理),然后使用file_get_contents
和php://input
流包装器读取原始输入。