Этот вопрос закрыт для ответов, так как повторяет вопрос Как исправить кодировку сайта в ответ на cURL запрос?
@9StarRu

CURL как перекодировать ответ?

С помощью curl получаю данные со стороннего сайта, изначально его кодировка не известна. В случае если кодировка windows-1251 получаю не читаемый сайт (испорчена кодировка), мне нужно отображать utf-8.

iconv("windows-1251", "UTF-8", $post); - помогает, НО если изначально кодировка и так utf-8 сайт я не получаю - белая страница.

curl_setopt($rCurl, CURLOPT_ENCODING, 'gzip,deflate'); - не помогло вообще.

Нашел как мне кажется решение моей проблемы:

<?php 
$tab = array("UTF-8", "ASCII", "Windows-1251", "Windows-1252", "ISO-8859-15", "ISO-8859-1", "ISO-8859-6", "CP1256"); 
$chain = ""; 
foreach ($tab as $i) 
{ 
    foreach ($tab as $j) 
    { 
        $chain .= " $i$j ".iconv($i, $j, "$my_string"); 
    } 
} 

echo $chain; 
?>


Как я понял, данная функция должна определить изначальную кодировку и потом, при необходимости изменить ее, но совладать с этим кодом я не смог.

Я не понял, где нужно задать нужную мне UTF-8 кодировку.

Мне кажется, что из строки $tab = array нужно удалить UTF-8, так как именно эта кодировка мне и нужна.

Пожалуйста, помогите настроить данный код так, чтобы он ничего не менял если изначальная кодировка UTF-8 и изменял кодировку если она не UTF-8.

Пробовал еще так сделать:

function convert_utf8( $post ) { 
    if ( strlen(utf8_decode($post)) == strlen($post) ) {   
        // $string is not UTF-8
        return iconv("windows-1251", "UTF-8", $post);
    } else {
        // already UTF-8
        return $post;
    }
}
echo $post;


не помогло.

Спасибо!
  • Вопрос задан
  • 1869 просмотров
Решения вопроса 1
GTRxShock
@GTRxShock
Full-stack developer (Symfony, Angular)
$isWinCharset = mb_check_encoding($post, "windows-1251");
if ($isWinCharset) {
    $post = iconv("Windows-1251", "UTF-8", $post);
}

помню, давным-давно решал подобную проблему, вот нашел одно из решений
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы