Здравствуйте, занимаюсь массовым парсингом с помощью curl, проблема в том что каждое необходимое мне слово (из title, h1 и description) я прогоняю через функцию нормализации кодировки. Проблема в том, что строки вида ����� без каких-либо изменений определяются как utf-8 (mb_detect_encoding), если прогонять все слова через декодировку с windows-1251 на utf-8, то эти знаки вопроса становятся нормальным текстом, но бывшие нормальные слова превращаются в кашу. Ломаю голову как определить наличие заменяющего символа � в строке, stripos($str, '�') === false возвращает true, php их в строке не видит.
Кодировку не нужно угадывать
Ее нужно брать из заголовков (добавь к curl опцию -D имя_файла, куда будут помещены все заголовки запроса)
Content-Type: text/html; charset=UTF-8
и что лучше, из тега <meta charset="utf-8">
p.s. чтобы угадать кодировку, пользуйся консольной утилитой enca, очень мощная вещь, угадывает множественные перекодирования, когда создатель накосячил (например открыть cp1251 в far в koi8 кодировке и скопировать через содержимое экрана)