处理utf-8格式的发布数据

时间:2016-07-24 09:46:36

标签: php http utf-8

我的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

1 个答案:

答案 0 :(得分:0)

  

我想如果HTTP post请求指定了charset脚本/ php将自动解决它?

不,字符编码是较低层。首先,您需要让PHP了解您要发送数据的Content-Type。

检查manual on $_POST,它说:

  

在请求中使用application/x-www-form-urlencodedmultipart/form-data作为HTTP Content-Type时,通过HTTP POST方法传递给当前脚本的关联变量数组。

对于HTTP文件上传,您将使用后者,其他“普通”表单数据(文本字段,基本上发送字符串数据的任何内容)是第一个。

当然,您的脚本必须根据所选的Content-Type发送编码的数据。无论你使用什么HTTP库,都应该提供处理它的方法;如果您不确定,我建议您查看文档。

就模拟HTML表单而言,这将是这样做的方法。如果这不是您的目标,那么您的另一个选择是发送以您选择的任何格式编码的数据,例如f.e. JSON(或者甚至可能没有任何特殊方式处理),然后使用file_get_contentsphp://input流包装器读取原始输入。