15.01.2018, 12:18
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
Все-таки я не понял, почему кодировка utf-8 не отображается правильно, ведь должна раз это utf-8. Почему utf-8 по разному смотрится?
|
|
15.01.2018, 12:20
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,587
|
|
Уверен ли ты что там именно utf8? Если уверен, то сами php файлы точно в utf8? А хедер, утверждающий что кодирока именно utf8 ты ставишь?
__________________
29375, 35
|
|
16.01.2018, 16:52
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
Всю тему подсказывают как проверить что utf8, думаю точно utf8. На фиг хедер? Вопрос не о том чтобы как можно больше в файл установок напихать, а о том как вообще работает кодировка. Чуть выше я писал что именно меня интересует. Я ни знаю и ни кто не знает на этом форуме этот вопрос. Читайте внимательней вопросы.
|
|
16.01.2018, 17:25
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от wadim
|
На фиг хедер?
|
Проанализируйте содержание того, что вы запрашиваете, поймете.
Сообщение от wadim
|
Вопрос не о том чтобы как можно больше в файл установок напихать, а о том как вообще работает кодировка.
|
Криво работает, насколько вы можете убедится. А значит надо разобраться почему. Я уже писал, что данная страница не имеет мета тега указывающего кодировку документа, а метод loadHTMLFile заголовки не анализирует. Хотите парится с DOMDocument, тогда так, как уже ранее писалось:
$html = file_get_contents('https://javascript.ru/forum/misc/72167-poluchenie-metatega-keywords.html');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML('<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' . $html);
$title = $dom->getElementsByTagName('title')->item(0)->textContent;
echo $title; //Получение метатега keywords - Javascript-форум
И чтобы это сделать, нужно знать, что данный документ в UTF, а для этого - имеется ли метатег, если нет, то анализировать заголовок.
Последний раз редактировалось laimas, 16.01.2018 в 17:27.
|
|
17.01.2018, 09:15
|
Профессор
|
|
Регистрация: 20.01.2014
Сообщений: 150
|
|
Проанализируйте содержание того, что вы запрашиваете, поймете. - это я понимаю, только что что подразумевали под хедер? Я думаю это:
<? header("Content-Type: text/html; charset=utf-8"); ?>
Так или иначе по моей логике последнее слово в за установкой кодировки остается за html документом. Я этот код убрал за ненадобностью:
<? header("Content-Type: text/html; charset=utf-8"); ?>
Хотя бывает что не работает на своем сайте кодировка, тогда выручает даже не этот код, а такой:
<? header("Content-Type: text/html; charset=windows-1251"); ?>
Вот и возникает вопрос что за хрень творится с кодировкой, а для этого надо знать не как это исправить, а по чему так происходит. И сейчашний вопрос о том же.
DOMDocument - почему Вы говорите что я парюсь с ним? Чем лучше file_get_contents? DOMDocument быстрей, если надо работать с содержимым страницы, а мне это и надо. Ваш код хорош, но он в два раза медленней, так как там загружаем и file_get_contents и loadHTML. Но можно пробовать и так.
...имеется ли метатег, если нет, то анализировать заголовок. - что за заголовок? title? Что анализировать то? Напишите пожалуйста то что Вы писали, но в полном варианте (код).
|
|
17.01.2018, 10:10
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Я не знаю что еще можно рассказать по данному вопросу.
1) <? header("Content-Type: text/html; charset=utf-8"); ?> - к контексту данной темы отношения не имеет, ибо вы получая контент стороннего сайта не можете заставить его передать заголовок. А заголовок не обязательно может передаваться РНР, это может делать и Apache. О коллизиях передачи кодировки посредством заголовка и мета тега читайте в сети, есть такое, пересказывать это здесь нет смысла.
2) "Я этот код убрал за ненадобностью ... тогда выручает даже не этот код, а такой" - это потому, что вы не анализируете данные, а действуете методом "научного тыка". Поэтому у вас и "возникает вопрос что за хрень творится с кодировкой". А надо не тыкать, а определить кодировку. Почему она криво определяется, это с вопрос к разработчику. Как это можно решить я показывал. Но решение то основано не на методе тыка, а вставлено ее определение именно такой, в какой и приходит документ.
3) Чем лучше file_get_contents? DOMDocument быстрей - file_get_contents не может быть ни лучше, ни хуже DOMDocument, это кардинально разные вещи, и говорить о скоростях бессмыслица. Вы уж проанализируйте код дабы понять почему file_get_contents.
4) Что анализировать то? - открываем отладчик браузера и запрашиваем страницу этой темы. Смотрим структуру этого документа и видим, что данная страница не имеет указания кодировки посредством <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. А как узнать программно кодировку документа? Только анализируя соответствующий заголовок передаваемый сервером. Узнав ее формируем тег <meta http-equiv="Content-Type" что_узнали> и далее как показано.
Так понятно почему file_get_contents и loadHTML?
Последний раз редактировалось laimas, 17.01.2018 в 10:17.
|
|
|
|