zjyuan1100 2015-12-28 17:28 采纳率: 36.4%
浏览 7823
已结题

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是乱码的;导致注册失败。
求大侠支招~

  • 写回答

4条回答 默认 最新

  • Crazy晓枫 2015-12-31 01:11
    关注

    用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应该就能解决。

    评论

报告相同问题?

悬赏问题

  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法