[英]Sending a GET request using PHP and Curl outputs Question marks
我认为这是一个编码问题,我尝试了我能想到的一切。 这是我的简单代码
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://theatrevazrajdane.bg/%D1%82%D0%B2%D0%BE%D1%80%D1%87%D0%B5%D1%81%D0%BA%D0%B8-%D1%81%D1%8A%D1%81%D1%82%D0%B0%D0%B2/%D0%B0%D0%BA%D1%82%D1%8C%D0%BE%D1%80%D0%B8/2",
CURLOPT_RETURNTRANSFER => true,
// CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS => "",
CURLOPT_HTTPHEADER => [
"Accept: application/json",
"Content-Type: text/html; charset=UTF-8"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
到目前为止,我绑:
使用以下参数从 Insomnia 发送它就可以了。
curl --request GET \
--url https://theatrevazrajdane.bg/%D1%82%D0%B2%D0%BE%D1%80%D1%87%D0%B5%D1%81%D0%BA%D0%B8-%D1%81%D1%8A%D1%81%D1%82%D0%B0%D0%B2/%D0%B0%D0%BA%D1%82%D1%8C%D0%BE%D1%80%D0%B8/2 \
--header 'Accept: application/json' \
--header 'Content-Type: text/html; charset=UTF-8'
例如,从 Insomnia 我得到页面的标题为<title>Актьори | Театър Възраждане</title>
<title>Актьори | Театър Възраждане</title>
,但是使用 cURL 从 PHP 发送这个我得到<title>������� | ������ ����������</title>
<title>������� | ������ ����������</title>
查看您提到的网站的Content-Type
标头:
Content-Type: text/html; charset=windows-1251;
这是返回字符串的编码: windows-1251
。
当您将自己的内容返回到浏览器时,要么给出这个,要么:
iconv
将编码转换为 UTF-8:$convertedResponse = iconv('Windows-1251', 'UTF-8', $response);
mb_convert_encoding
将编码转换为 UTF-8:$convertedResponse = mb_convert_encoding($response, 'UTF-8', 'Windows-1251');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.