Задать вопрос
@Soft_touch_plastic

Как в php определить кодировку строки?

Здравствуйте, занимаюсь массовым парсингом с помощью curl, проблема в том что каждое необходимое мне слово (из title, h1 и description) я прогоняю через функцию нормализации кодировки. Проблема в том, что строки вида ����� без каких-либо изменений определяются как utf-8 (mb_detect_encoding), если прогонять все слова через декодировку с windows-1251 на utf-8, то эти знаки вопроса становятся нормальным текстом, но бывшие нормальные слова превращаются в кашу. Ломаю голову как определить наличие заменяющего символа � в строке, stripos($str, '�') === false возвращает true, php их в строке не видит.
  • Вопрос задан
  • 133 просмотра
Подписаться 2 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@rPman
Кодировку не нужно угадывать
Ее нужно брать из заголовков (добавь к curl опцию -D имя_файла, куда будут помещены все заголовки запроса)
Content-Type: text/html; charset=UTF-8

и что лучше, из тега
<meta charset="utf-8">

p.s. чтобы угадать кодировку, пользуйся консольной утилитой enca, очень мощная вещь, угадывает множественные перекодирования, когда создатель накосячил (например открыть cp1251 в far в koi8 кодировке и скопировать через содержимое экрана)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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