Home >Backend Development >PHP Tutorial >php post请求乱码的问题

php post请求乱码的问题

WBOY
WBOYOriginal
2016-06-23 14:13:59897browse

PHP 乱码

使用最土模板里的post请求源码如下
	static public function DoPost($url,$post_data=array()){		$url2 = parse_url($url);		$url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]);		$url2["port"] = ($url2["port"] == "" ? 80 : $url2["port"]);		$host_ip = @gethostbyname($url2["host"]);		$fsock_timeout = 2; //2 second		if(($fsock = fsockopen($host_ip, $url2['port'], $errno, $errstr, $fsock_timeout)) < 0){			return false;		}		$request =  $url2["path"].($url2["query"] ? "?" . $url2["query"] : "");		$post_data2 = http_build_query($post_data);		$post_data2=urldecode($post_data2);		$in  = "POST " . $request . " HTTP/1.0\r\n";		$in .= "Accept: */*\r\n";		$in .= "Host: " . $url2["host"] . "\r\n";		$in .= "User-Agent: Lowell-Agent\r\n";		$in .= "Content-type: application/x-www-form-urlencoded\r\n";		$in .= "Content-Length: " . strlen($post_data2) . "\r\n";		$in .= "Connection: Close\r\n\r\n";		$in .= $post_data2 . "\r\n\r\n";		unset($post_data2);		if(!@fwrite($fsock, $in, strlen($in))){			fclose($fsock);			return false;		}		return self::GetHttpContent($fsock);	}	static private function GetHttpContent($fsock=null) {		$out = null;		while($buff = @fgets($fsock, 2048)){			$out .= $buff;		}		fclose($fsock);		$pos = strpos($out, "\r\n\r\n");		$head = substr($out, 0, $pos);    //http head		$status = substr($head, 0, strpos($head, "\r\n"));    //http status line		$body = substr($out, $pos + 4, strlen($out) - ($pos + 4));//page body		if(preg_match("/^HTTP\/\d\.\d\s([\d]+)\s.*$/", $status, $matches)){			if(intval($matches[1]) / 100 == 2){				return $body;  			}else{				return false;			}		}else{			return false;		}	}

实现的是http短信发送 因为运营商没有urldecode 我这里只能想到参数原文字请求 发送到手机的短信是乱码的本人接触php也不久 想请教下各位 有没有什么办法 能解决乱码问题。
可不可以通过其他方式请求http。

回复讨论(解决方案)

乱码可能导致原因是两边编码不一致,比如运营商那里是GBK编码,你页面用了UTF8编码,你把你的页面和运营商的保持一致试试。

乱码可能导致原因是两边编码不一致,比如运营商那里是GBK编码,你页面用了UTF8编码,你把你的页面和运营商的保持一致试试。
试过了还是乱码。


来人啊

先问清楚接受方的编码需求 然后根据需要编码.

先问清楚接受方的编码需求 然后根据需要编码.
他们说编码是GB2312 我把页面的charset设置gb2312了 发送结果还是乱码。


先问清楚接受方的编码需求 然后根据需要编码.
他们说编码是GB2312 我把页面的charset设置gb2312了 发送结果还是乱码。

发送的字符做一个iconv

光顾着看你的头像了,脑子空空的

关键是你发送过去的数据是gbk,不是改charset就行的

光顾着看你的头像了,脑子空空的

关键是你发送过去的数据是gbk,不是改charset就行的
哈哈 要专注啊
上面的代码该怎么处理能处理成gbk呢

跟上面的代码无关,传参前就要转换

跟上面的代码无关,传参前就要转换
多谢大侠指点。 成功了。

好牛B的麻花

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn