Получаю строку:
$text = file_get_contents( $link );
echo mb_detect_encoding ( $text );
Знаю что файл кодировки ANSI, а выводит UTF-8. В связи с этим не могу конвертировать в UTF-8. Если просто вывести $text, выведет � вместо кириллицы. Скрипт в формате UTF-8. Что нужно почитать?
Кто подскажет почему так, буду благодарен.
Функция mb_detect_encoding не особо хорошо умеет определять кириллицу. Навскидку см. например тут: https://habr.com/en/post/107945/
И ещё была одна замечательная статья на хабре (к сожалению ссылку потерял и поиском не ищется, возможно уже давно удалена). В двух словах там было следущее: функции автоопределения кодировки в разных блокнотах (notepad++, sublime) достаточно простые, неумные, а главное - на небольших отрезках текста могут давать ложные срабатывания.
Автор той статьи работал в техподдержке какого-то вебхостинга и пилил свой блокнот для правки файлов прямо на хостинге, поэтому когда его замучали клиенты - разобрался в вопросе достаточно глубоко.
Поэтому, имейте ввиду:
Поэтому этих PHP-функций по автодетекту кириллицы вы встретите на просторах интернета много, разных.
И ещё. Вам в первых двух комментариях к вопросу дали совершенно правильные советы. Прежде чем гонять через iconv кодировки - лучше убедиться, что у вас всё находится в UTF8 (сами исходники, файлы, если это веб - то в хедерах прописано). Все эти костыли, когда у вас один файл на тысячу так некрасиво в коде смотрятся, что проще заранее договориться, что сервис работает строго в utf-8, чем костыли городить.
Продвижение своими сайтами как стратегия роста и независимости