Два тега charset на странице, что взять? - PullRequest
1 голос
/ 05 августа 2009

Я работаю над сканированием страниц для получения информации и столкнулся с множеством проблем при разборе страниц в Groovy. Я сделал полу-решение, которое работает большую часть времени, используя юниверсал чарде и просто сканируя страницу на наличие тега в голове, но иногда два из этих тегов находятся на одной странице, например:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Существует ли стандарт, по которому можно использовать (первый, последний, оба ...?) Или какой-то более простой способ сделать это? Спасибо.

Ответы [ 2 ]

3 голосов
/ 05 августа 2009

Я бы сделал это эвристически:

  • Все ли на самом деле ASCII? Если это так, не имеет значения, какой вы используете.
  • Соответствует ли оно действующему UTF-8? Если это так, я бы использовал это.
  • В противном случае используйте ISO-8859-1.

Возможно, вы захотите взглянуть и на заголовок типа контента, возвращаемый с веб-сервера ...

По сути, страница не работает, но приведенное выше должно дать разумную «лучшую догадку».

0 голосов
/ 05 августа 2009

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

...