Вопрос: vs


Чтобы определить кодировку для HTML5 Doctype , какую нотацию использовать?

  1. Короткий:

    <meta charset="utf-8" /> 
    
  2. Длинный:

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

1377


источник


Ответы:


В HTML5 они эквивалентны. Используйте более короткую, ее легче запомнить и напечатать. Поддержка браузера в порядке поскольку он был разработан для обратной совместимости.


967



Обе формы мета-кодировка декларация эквивалентна и должна работать одинаково в браузерах. Но есть несколько вещей, которые вам нужно запомнить, когда объявления ваших веб-файлов обозначаются как UTF-8:

  1. Сохраните файл (ы) в кодировке UTF-8 без знак байтового знака (BOM),.
  2. Объявите кодировку в ваших HTML-файлах, используя мета-кодировка (например, выше).
  3. Ваш веб-сервер должен обслуживать ваши файлы, объявляя кодировку UTF-8 в HTTP-заголовке Content-Type.

Серверы Apache настроены на обслуживание файлов по ISO-8859-1 по умолчанию, поэтому вам нужно добавить следующую строку в свою .htaccessфайл:

AddDefaultCharset UTF-8

Это позволит настроить Apache для работы с вашими файлами, объявляющими кодировку UTF-8 в заголовке ответа Content-Type, но ваши файлы должен сохраняться в UTF-8 (без спецификации) для начала.

Блокнот не может сохранять ваши файлы в UTF-8 без спецификации. Бесплатный редактор, который может Notepad ++ , В строке меню программы выберите «Кодирование> Кодировка в UTF-8 без спецификации». Вы также можете открывать файлы и повторно сохранять их в UTF-8, используя «Кодирование> Преобразовать в UTF-8 без спецификации».

Подробнее о Значок байтового заказа (BOM) в Википедии ,


235



Другая причина пойти с коротким заключается в том, что он соответствует другим экземплярам, ​​где вы можете указать набор символов в разметке. Например:

<script type="javascript" charset="UTF-8" src="/script.js"></script>

<p><a charset="UTF-8" href="http://example.com/">Example Site</a></p>

Согласованность помогает уменьшить ошибки и сделать код более читаемым.

Обратите внимание, что атрибут charset не учитывает регистр. Вы можете использовать UTF-8 или utf-8, однако UTF-8 более четкий, читаемый и более точный.

Кроме того, нет абсолютно никакой причины использовать любое значение, отличное от UTF-8, в атрибуте мета-кодировки или заголовке страницы. UTF-8 является кодировкой по умолчанию для веб-документов с HTML4 в 1999 году и единственным практическим способом создания современных веб-страниц.

Также вы не должны использовать HTML-объекты в UTF-8. Символы, подобные символу авторского права, должны быть напечатаны напрямую. Единственными сущностями, которые вы должны использовать, являются 5 зарезервированных символов разметки: меньше, больше, амперсанд, простой, двойной премьер. Сущностям нужен парсер HTML, который вы не всегда можете использовать в будущем, они вносят ошибки, делают ваш код менее читаемым, увеличивают размеры вашего файла и иногда неправильно декодируют в разных браузерах в зависимости от того, какие объекты вы использовали. Узнайте, как вводить / вставлять авторские права, торговую марку, открытую цитату, закрывать цитату, апостроф, em dash, en dash, bullet, Euro и любые другие символы, с которыми вы сталкиваетесь в своем контенте, и использовать эти фактические символы в своем коде. У Mac есть средство просмотра символов, которое вы можете включить в настройке системы клавиатуры, и вы можете найти, а затем перетащить нужные символы или использовать соответствующий инструмент просмотра клавиатуры, чтобы узнать, какие ключи нужно вводить. Например, товарный знак - Option + 2. UTF-8 содержит все символы и символы на каждом письменном человеческом языке. Поэтому нет никакого оправдания для использования - вместо em emash. Неплохая идея также изучить правила пунктуации и типографики ... например, зная, что период проходит внутри закрытой цитаты, а не снаружи.

Использование тега для чего-то типа контента и кодирования   иронично, поскольку, не зная этих вещей, вы не могли разобрать файл   для получения значения метатега.

Нет, это не правда. Браузер начинает разбор файла как кодировку по умолчанию браузера, либо UTF-8, либо ISO-8859-1. Поскольку US-ASCII является подмножеством ISO-8859-1 а также UTF-8, браузер может отлично читать в любом случае ... это то же самое. Когда браузер встречает тег мета-кодировки, если кодировка отличается от того, что браузер уже использует, браузер перезагружает страницу в указанной кодировке. Вот почему мы помещаем мета-чарт-тег вверху, сразу после заголовка, перед чем-либо еще, даже заголовком. Таким образом, вы можете использовать символы UTF-8 в своем названии.

Вы должны сохранить свои файлы в кодировке UTF-8 без спецификации

Это не совсем так. Если в документе есть только символы US-ASCII, вы можете сохранить его как US-ASCII и использовать его как UTF-8, потому что это подмножество. Но если есть символы Unicode, вы правы, вы должны сохранить как UTF-8 без спецификации.

Если вам нужен хороший текстовый редактор, который сохранит ваши файлы   в UTF-8 я рекомендую Notepad ++.

На Mac используйте Bare Bones TextWrangler (бесплатно) из Mac App Store или Bare Bones BBEdit, который находится в Mac App Store за 39,99 $ ... очень дешево для такого отличного инструмента. В любом приложении есть меню в нижней части окна документа, где вы указываете кодировку документа, и вы можете легко выбрать «UTF-8 no BOM». И, конечно, вы можете установить это как значение по умолчанию для новых документов в настройках.

Но если ваш веб-сервер служит для кодирования в HTTP-заголовке,   который рекомендуется, оба [метатеги] бесполезны.

Это неверно. Конечно, вы должны установить кодировку в HTTP-заголовке, но вы также должны установить ее в атрибуте мета-charset, чтобы страница могла быть сохранена пользователем, из браузера на локальное хранилище, а затем снова открыта позже, и в этом случае единственным признаком кодирования, которое будет присутствовать, является атрибут мета-кодировки. Вы также должны установить базовый тег по той же причине ... на сервере базовый тег не нужен, но при открытии из локального хранилища базовый тег позволяет странице работать так, как если бы она была на сервере, при этом все активы на месте и т. д., нет неработающих ссылок.

AddDefaultCharset UTF-8

Или вы можете просто изменить кодировку определенных типов файлов следующим образом:

AddType text/html;charset=utf-8 html

Совет для обслуживания файлов UTF-8 и Latin-1 (ISO-8859-1) должен предоставить UTF-8 файлам текстовое расширение и латинские файлы «txt».

AddType text/plain;charset=iso-8859-1 txt
AddType text/plain;charset=utf-8 text

Наконец, рассмотрите вопрос о сохранении ваших документов с окончанием строки Unix, а не в устаревших версиях DOS или (классических) контуров Mac, которые не помогают и могут повредить, особенно по линии, поскольку мы все больше и больше получаем от этих унаследованных систем. HTML-документ с допустимой кодировкой HTML5, UTF-8 и окончанием строки Unix - это хорошо выполненная работа. Вы можете делиться и редактировать, хранить, читать и восстанавливать и полагаться на этот документ во многих контекстах. Это лингва-франка. Это цифровая бумага.


78



<meta charset="utf-8">был введен с / для HTML5.

Как указано в документации, оба действительны. Однако, <meta charset="utf-8">предназначен только для HTML5 (и проще вводить / запоминать).

В свое время старый стиль неизбежно станет устаревшим в ближайшем будущем. Я буду придерживаться нового <meta charset="utf-8">,

Есть только один способ, но вверх. В случае с технологией, это поэтапный отказ от старого (действительно, ДЕЙСТВИТЕЛЬНО быстрого)

Документация: HTML-мета-кодировка Attribute-W3Schools


28



While not contesting the other answers, I think the following is worthy of mentioning.

  1. The “long” (http-equiv) notation and the “short” one are equal, whichever comes first wins;
  2. Web server headers will override all the <meta> tags;
  3. BOM (Byte order mark) will override everything, and in many cases it will affect html 4 (and probably other stuff, too);
  4. If you don't declare any encoding, you will probably get your text in “fallback text encoding” that is defined your browser. Neither in Firefox nor in Chrome it's utf-8;
  5. In absence of other clues the browser will attempt to read your document as if it was in ASCII to get the encoding, so you can't use any weird encodings (utf-16 with BOM should do, though);
  6. While the specs say that the encoding declaration must be within the first 512 bytes of the document, most browsers will try reading more than that.

You can test by running echo 'HTTP/1.1 200 OK\r\nContent-type: text/html; charset=windows-1251\r\n\r\n\xef\xbb\xbf<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta charset="windows-1251"><title>привет</title></head><body>привет</body></html>' | nc -lp 4500 and pointing your browser at localhost:4500. (Of course you will want to change or remove parts. The BOM part is \xef\xbb\xbf. Be wary of the encoding of your shell.)

Please mind that it's very important that you explicitly declare the encoding. Letting browsers guess can lead to security issues.


17



Use <meta charset="utf-8" /> for web browsers when using HTML5.

Use <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> when using HTML4 or XHTML, or for outdated dom parsers, like DOMDocument in php


8



There is some news based on Mozilla Foundation, and sitepoint

Do not use this value (http-equiv=content-type) as it is obsolete. Prefer the charset attribute on the <meta> element. enter image description here


0