mr_qpdb
@mr_qpdb
⏱ - is not eternal

Как задать кодировку curl?

Пытаюсь получить DOM-дерево через curl, но не получается задать кодировку.

Вот код:
function curl_get($url, $referer = 'www.google.com') {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36");
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$html = curl_get('https://www.potehechas.ru/club/fact_1.shtml');

// file_put_contents('1.txt', $html);
echo $html;


Вот, что в .htaccess:
#AddDefaultCharset UTF-8
AddDefaultCharset WINDOWS-1251


Вот, что получается:
5e96aa0417998088369655.png
  • Вопрос задан
  • 2162 просмотра
Решения вопроса 1
mr_qpdb
@mr_qpdb Автор вопроса
⏱ - is not eternal
Решил вопрос с iconv.
iconv — утилита UNIX для преобразования текста из одной кодировки в другую. Также портирована под Windows.

Вот код:
function curl_get($url, $referer = 'www.google.com') {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36");
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $data = curl_exec($ch);
    curl_close($ch);
    $body = iconv('windows-1251', 'UTF-8', $data);
    return $body;
}
$html = curl_get('https://www.potehechas.ru/club/fact_1.shtml');
echo $html;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ну добавьте в код
curl_setopt(CURLOPT_HTTPHEADER, array("Accept-Charset: WINDOWS-1251"));
, вдруг поможет...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы