php curl 提交参数中文乱码问题

A站通过url形式POST数据注册B站,psot的中文,在B站是显示乱码的;
直接贴码:
$name="黄飞鸿";
$password="123456";
$get_url = "http://www.xxx.com/reg.php?name=".$name."&password=".$password
$row=getToken($get_url);

$obj=json_decode($row);

function getToken($url){
$ch = curl_init();
$this_header = array("content-type: application/x-www-form-urlencoded; charset=UTF-8");
curl_setopt($ch, CURLOPT_HTTPHEADER,$this_header);
curl_setopt($ch, CURLOPT_URL,$url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
return curl_exec($ch);
}

对方收到的name是乱码的;导致注册失败。
求大侠支招~

用echo输出的中文显示成乱码,
其实应该是各种服务器脚本都会遇到这个问题,
根本还是编码问题,
一般来说出于编码兼容考虑大多的页面都将页面字符集定义为utf-8

这时候要正常显示中文需要转化一下编码方式,比如
echo iconv("GB2312","UTF-8",'中文');就不会乱码了
还有其他方法,比如
在php的echo前面加入header("Content-Type:text/html;charset=gb2312");
当然简体中文页面也可以干脆地,
把中的UTF-8改成gb2312

实际中遇见奇怪的现象,
在本机服务器上正常显示的页面,传上服务器就echo出来乱码,
没仔细琢磨过这个缘由,因为通过iconv函数GB2312、UTF-8换换位置重新编码下就正常了,
不过估计肯定是APACHE,更确切说是PHP服务端的设置不同造成的,
看看PHP.INI应该就能解决。

用notepad++ 修改编码格式 修改为utf8 无bom头

朋友,问题解决了没,如何解决的?

检测一下乱码是不是Unicode乱码,是的话,用以下方式看看
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data,JSON_UNESCAPED_UNICODE));
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen(json_encode($data,JSON_UNESCAPED_UNICODE))
)
);