С помощью 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;
не помогло.
Спасибо!