[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: file_get_contents в utf8
Revan
Здравствуйте!
Нужно написать программу-парсер, для этого я использую file_get_contents, программа работает в кодировке utf-8, но некоторые страницы, которые приходится парсить содержат в себе windows-1251 и вместо нормального текста парсит квадратики вместо русских символов. Что сделать, чтобы парсер работал нормально?

Спасибо за помощь заранее!



Спустя 3 минуты, 6 секунд (8.08.2011 - 20:58) Guest написал(а):
почитай про iconv

Спустя 4 минуты, 44 секунды (8.08.2011 - 21:03) Revan написал(а):
Я знаю про iconv, но пользуюсь ею не часто. Дело в том, что она принудительно конвертирует строку из одного формата в другой, если текст уже в utf-8, то получится каша, что делать в таких случаях?

Спустя 1 минута, 25 секунд (8.08.2011 - 21:04) bulgakov написал(а):
проверять кодировку, если юникод то не кодировать если не юникод то использовать iconv

Спустя 6 минут, 32 секунды (8.08.2011 - 21:11) Revan написал(а):
Какая функция для этого подходит лучше? Только что попробовал mb_detect_encoding, но что-то она не слишком хорошо различает utf-8 и cp1251. Везде возвращает UTF-8.

Спустя 1 час, 24 секунды (8.08.2011 - 22:11) neadekvat написал(а):
Что парсишь то? file_get_contents - это для файлов. А если сайты - то там заголовки есть, можно вполне себе посмотреть, что за кодировка у сайта.

Спустя 2 минуты, 33 секунды (8.08.2011 - 22:14) Invis1ble написал(а):
Revan
Цитата
mb_detect_encoding

это кал.
Штатных функций для определения кодировки нормальных нет, насколько я знаю.
Можно определить юникод или нет, используя такой хак:
function isUnicode($string) {
return (bool)preg_match('##u', $string);
}

Спустя 59 секунд (8.08.2011 - 22:15) neadekvat написал(а):
Invis1ble, у меня даже при известной кодировке модификатор u от раза к разу работает)

Спустя 1 минута, 31 секунда (8.08.2011 - 22:16) Invis1ble написал(а):
neadekvat
странно, никогда не замечал подобных проблем

Спустя 19 минут, 16 секунд (8.08.2011 - 22:35) Revan написал(а):
Парсятся сайты, и именно те, которые введет пользователь. Что-то типа функции на фейсбуке где можно вставить ссылку. У них там все работает прекрасно. Я вот и думаю, каким образом можно все это нормально парсить, должна же быть какая-то универсальная функция, или метод с помощью которого можно без проблем парсить как utf-8 сайты так и cp1251.

Спустя 10 минут, 33 секунды (8.08.2011 - 22:46) Invis1ble написал(а):
Revan
кури в сторону cURL, в ответе сервера будет кодировка страницы

Спустя 6 минут, 48 секунд (8.08.2011 - 22:53) neadekvat написал(а):
Или используй функцию get_headers.


_____________
FC Barcelona - она всегда будет в моем сердце!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.