我在运行php 5.2。*;
的服务器上有以下代码$curl = curl_init();
//$sumName = curl_escape($curl, $sumNameWeb);
$summonerName = urlencode($summonerName);
$url = "https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/{$summonerName}?api_key=".$key;
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $url);
$result = curl_exec($curl);
$result = utf8_encode($result);
$obj = json_decode($result, true);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
它工作正常,但是当涉及到特殊字符时; Öååí..等它无法连接..我一直尝试不同的方式也许我会找到修复但我没有这样做..
好的,我发现了我的错误!!但这是我的情况..它连接到服务器并获取数据..并且我使用$ sumNameWeb来解码时,它被解码但是返回的$ sumNameWeb特殊字符已更改..这里是访问的代码JSON;
$sumID = $obj[$sumNameWeb]["id"];
$sumLvl = $obj[$sumNameWeb]["summonerLevel"];
一个例子是,从服务器输入ë并返回ë
答案 0 :(得分:0)
urlencode
根据UTF-8
字符集编码对非ASCII字符进行编码。所以很可能你的问题是你的文本(源代码)采用其他编码(不同于UTF-8
)。您必须确保它具有UTF-8
编码。
答案 1 :(得分:0)
试一下
尝试在curl请求中再设置一个curl参数,用于从结果中过滤垃圾数据。
curl_setopt($curl, CURLOPT_ENCODING ,"");
我希望这可以帮助你!!
答案 2 :(得分:0)
在发送任何发送卷曲之前在页面中添加header。
header('Content-Type: text/html; charset=utf-8');
答案 3 :(得分:0)
我遇到了同样的问题。 urlencode无法使用这些链接。我不得不专门用自己取而代之。
$curl = curl_init();
//$sumName = curl_escape($curl, $sumNameWeb);
$summonerName = urlencode($summonerName);
$url = "https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/{$summonerName}?api_key=".$key;
$str = $url;
$str = str_replace("{", "%7B", $str);
$str = str_replace("$", "%24", $str);
$str = str_replace("}", "%7D", $str);
$url = $str;
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $url);
$result = curl_exec($curl);
$result = utf8_encode($result);
$obj = json_decode($result, true);
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
这应该有效。如果需要替换其他字符,可以通过以下链接找到其链接替代:url encoder