Помогите с кодировкой utf-8

229
28 февраля 2018, 10:17

Через curl получаю строку, текст и сам ответ в utf-8, на выходе получаю
(Ê ÷åðòó âñå! Áåðèñü è äåëàé - Ðè÷àðä Áðýíñîí), варианты конвертации в utf8 не помогли, через функцию определения кодировки определяет как utf8. Подскажите как перевести строку в человеческий вид?

К сожалению код большой, не могу его показать, но опишу: Получаю страницу через библиотеку php-curl-class
Далее получаю строку через phpQuery

Суть в том что есть 2 аналогичных сайта, с одного нормальная кодировка, а с другого нет, хотя два сайта в utf8

Вот часть кода

$multi_curl = new MultiCurl();
$multi_curl->setConnectTimeout(300);
$multi_curl->setTimeout(300);
$multi_curl->setOpt(CURLOPT_SSL_VERIFYPEER, FALSE);
$multi_curl->setUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
$multi_curl->success(function($instance) use($competitor) {
    $sql_insert = [];
    $pq = phpQuery::newDocument($instance->response);
    $name = trim($pq->find('h1.name')->text()); // Result - Ê ÷åðòó âñå! Áåðèñü è äåëàé - Ðè÷àðä Áðýíñîí
    $pq->unloadDocument();
});
foreach ($source_links as $value) {
    $multi_curl->addGet($value['url']);
}
$multi_curl->start();
Answer 1

Приходит ответ не в UTF-8

Для начала нужно заметить что как сказано и здесь и How to detact the encoding using mb_detect_encoding correct?

Обнаружение кодирования не является точной «наукой», поэтому лучшее, что вы можете сделать, это избежать этого :)

Укажите

$multi_curl->setOpt(CURLOPT_ENCODING, "");

Потом после того какк вы получаете ответ можно проверить кодировку ответа.

mb_detect_encoding($s);

Но возможно кодировка будет выявлена неверно. Тогда попробуйте проверить разные варианты.

header("Content-Type: text/html; charset=Windows-1251");
$s = 'Ê ÷åðòó âñå! Áåðèñü è äåëàé - Ðè÷àðä Áðýíñîí0';
echo mb_detect_encoding($s);
echo '<pre>';
var_dump(utf8_decode($s));

Вывод:

UTF-8
string(45) "К черту все! Берись и делай - Ричард Брэнсон0"
READ ALSO
Как создать тест на PHP?

Как создать тест на PHP?

ПриветствуюЕсть тест на php

288
DLE facebook share не работает как надо

DLE facebook share не работает как надо

Почему не подтягивает title https://prntsc/ijxbio вот статья http://yaskraveradio

204
Вычислить сумму факториалов [требует правки]

Вычислить сумму факториалов [требует правки]

Нужна помощь в решении задачи на php:

230
Динамическое обновление страницы

Динамическое обновление страницы

Доброго времени сутокНужна помощь, есть страница с выводом например новостей, на PHP

252