Искатель PHP - проблема с сайтами с разными кодировками

Я создаю анализатор плотности ключевых слов. Я создал анализатор ключевых слов, который отлично работает с веб-сайтами с английским содержанием и кодировкой UTF-8. Когда я сканирую веб-сайт, например myegy.com, ключевые слова на арабском языке отображаются на моем веб-сайте в виде вопросительных знаков. Я пробовал iconv и mb_convert_strings, и оба они не работают.

Мне нужна помощь в создании программы плотности ключевых слов, которая может сканировать все языки и кодировки, сохранять их в базе данных с кодировкой utf-8 и отображать их обратно...

Я новичок в кодировках, поэтому ваша помощь будет очень признательна...

Отображается на моей странице как ������ и с помощью iconv -> ÈÌæÏÉ. Он должен отображаться на арабском языке, хотя я не могу показать его, поскольку арабский язык отображается в виде вопросительных знаков.


person Speedy Wap    schedule 24.12.2010    source источник
comment
Когда вы говорите, что пробовали iconv, что вы делали? Вам нужно прочитать заголовок Content-Type и метатег 'content-type', чтобы найти, где указана кодировка, а затем iconv на основе обнаруженной кодировки.   -  person d11wtq    schedule 24.12.2010
comment
Я пытался использовать mb_Detect_encoding, а также получить кодировку из заголовков веб-сайта и ввести ее вручную. Ничего не работает.   -  person Speedy Wap    schedule 24.12.2010


Ответы (1)


myegy.com использует кодировку Windows-1256. Iconv поддерживает это. Это должно работать, пока вы находите объявление и правильно используете iconv.

При сканировании сети вы обнаружите множество различных кодировок, некоторые из них будут названы неправильно, некоторые будут фиктивными. На многих страницах не будет объявления кодировки, и они будут полагаться на угадывание кодировки браузерами.

Если вы хотите как можно лучше поддерживать все кодировки, вам необходимо реализовать алгоритм обнаружения кодировки HTML5:

http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#determining-the-character-encoding

Также обратите внимание, что встроенный в PHP DOMDocument::loadHTML() поддерживает очень мало кодировок. Сначала вам придется преобразовать документы (и объявления кодировки в них) в UTF-8.

person Kornel    schedule 11.01.2011