Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CURL不是';正确处理编码返回数据_Php_Http_Curl_Encoding_Utf 8 - Fatal编程技术网

PHP CURL不是';正确处理编码返回数据

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

我有一些小的编码问题。我从这里得到一个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.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);