php-curl windows-1253 编码为 utf8 的问题

Issue with php-curl windows-1253 encoding to utf8

提问人:John Greco 提问时间:5/14/2019 更新时间:5/14/2019 访问量:782

问:

我正在使用此代码将数据显示到 php 页面上:

$url = 'http://example.com';

//Initiate cURL and pass it the URL we want to retrieve.
$ch = curl_init($url);

//Tell cURL to return the output as a string.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

//Execute the cURL request and return the output to a string.
$response = curl_exec($ch);

//Print out the response to the browser.
echo mb_detect_encoding($response);
echo utf8_encode($response);

最后两行包含我上次尝试的调试方法。 Mb_detect_encodign在我的内容中返回 UTF-8,即使原始源 URL 在其字符集中包含 windows-1253 编码。

内容未正确显示 - 它返回的字符如下:õìðëçñþóôå 而不是希腊字符中预期的原始内容。

我知道 PHP 不支持 Windows-1253,但是,似乎 phpcurl 正在将其转换为 UTF8 - 但就我而言,它没有正确完成。

我尝试添加一个 php 标头,但没有运气。也尝试添加mb_convert_encoding,但没有运气。

有什么建议吗?

curl iframe utf-8 php-curl mb-convert-encoding

评论


答:

1赞 John Greco 5/14/2019 #1

通过更改为:file_get_contents

function file_get_contents_utf8($fn) { 
     $content = file_get_contents($fn); 
      return mb_convert_encoding($content, 'UTF-8', 
          mb_detect_encoding($content, 'UTF-8, ISO-8859-7', true)); 
} 

print file_get_contents_utf8('http://example.com/');