PHP CURL不是';正确处理编码返回数据
我有一些小的编码问题。我从这里得到一个json数据字符串(自己试试): 数据中的名称如下所示PHP CURL不是';正确处理编码返回数据,php,http,curl,encoding,utf-8,Php,Http,Curl,Encoding,Utf 8,我有一些小的编码问题。我从这里得到一个json数据字符串(自己试试): 数据中的名称如下所示 Ari Skúlason 如何使用正确的编码获取此数据,以使其成为Ari Skúlason 我试着在php中将其切换为utf-8 echo mb_convert_encoding($r,'ISO-8859-1','utf-8'); 这让我更接近了,但还是不对 Ari Sk�lason 我的php curl请求: $location = 'http://cdn.content.easports.c
Ari Skúlason
如何使用正确的编码获取此数据,以使其成为Ari Skúlason
我试着在php中将其切换为utf-8
echo mb_convert_encoding($r,'ISO-8859-1','utf-8');
这让我更接近了,但还是不对
Ari Sk�lason
我的php curl请求:
$location = 'http://cdn.content.easports.com/fifa/fltOnlineAssets/C74DDF38-0B11-49b0- B199-2E2A11D1CC13/2014/fut/items/web/179899.json';
$ch = curl_init($location);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json'));
$r = curl_exec($ch);
curl_close($ch);
echo mb_detect_encoding($r);
$r = mb_convert_encoding($r,'ISO-8859-1','utf-8');
print_r($r);
为
CURLOPT_ENCODING
设置另一个curl选项,并将其设置为“”,以确保它不会返回任何垃圾
curl_setopt($ch, CURLOPT_ENCODING ,"");
您可以使用标题
header('Content-type: text/html; charset=UTF-8');
在解码字符串之后
$page = utf8_decode(curl_exec($ch));
这对我有用
或
加上这个
$page = curl_exec($ch);
$dom = new DOMDocument('1.0', 'utf-8');
libxml_use_internal_errors(true);
@$dom->loadHTML(mb_convert_encoding($page, 'HTML-ENTITIES', 'UTF-8'));
你也可以试试
utf8_编码编码的ASCII字符。返回未编码的ASCII可能会中断或返回错误(在我的情况下)。您可以尝试
$res= curl_exec ( $ch );
$result = iconv("Windows-1251", "UTF-8", $res);
你能控制你的url吗?无论编码是否有效,都可以更改编码,UTF-8不是CURLOPT_编码的有效参数。这指定接受编码字段,与字符编码无关。有效参数为:identity、gzip、deflate和“”。当从CURL或浏览器请求时,我对同一URL有不同的响应。非常感谢你让我了解你的用户代理。。。现在,它在两种情况下都可以正常工作:)
$page = curl_exec($ch);
$dom = new DOMDocument('1.0', 'utf-8');
libxml_use_internal_errors(true);
@$dom->loadHTML(mb_convert_encoding($page, 'HTML-ENTITIES', 'UTF-8'));
$results = curl_exec($init);
curl_close($init);
return json_decode(utf8_encode($results));
$res= curl_exec ( $ch );
$result = iconv("Windows-1251", "UTF-8", $res);