我有一个带有后期操作的grails控制器.
现在,当我通过PHP和curl尝试发布到grails控制器时,我得到了什么?像åäö等字符的占位符
如果我创建一个小的html表单,在同一个帖子中,grails控制器接收的参数为åäö而不是?等.
下面的差异是什么?如何让curl充当html表单示例?
卷曲的例子:
$x = curl_init("http://localhost/post");
curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($x, CURLOPT_POST, 1);
curl_setopt($x, CURLOPT_POSTFIELDS, "Foo=ö");
curl_setopt( $x, CURLOPT_ENCODING, "UTF-8" );
curl_setopt($x, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($x);
curl_close($x);
html表单示例:
<html>
<Meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head><title></title></head>
<body>
<form name="input" action="http://localhost/post" method="post" enctype="application/x-www-form-urlencoded">
<TEXTAREA NAME="Foo" COLS=10 ROWS=4 type=text>ö</TEXTAREA>
<input class="button" type="submit" value="send"/>
</form>
</body>
</html>
解决方法:
“UTF-8”不是CURLOPT_ENCODING的有效值.您只能被允许身份,deflate或gzip.您需要在Content-Type标头中设置它:
curl_setopt($x, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded; charset=UTF-8'));