提问人:John Greco 提问时间:5/14/2019 更新时间:5/14/2019 访问量:782
php-curl windows-1253 编码为 utf8 的问题
Issue with php-curl windows-1253 encoding to utf8
问:
我正在使用此代码将数据显示到 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,但没有运气。
有什么建议吗?
答:
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/');
评论