Как поставить utf 8 html

Для правильного отображения HTML-страницы браузер должен знать, какой набор символов (кодировку) использовать:

Пример

Компьютерные данные хранятся в виде двоичных кодов (01000101) в электронике.

Поскольку ASCII использует 7 бит для символа, он может представлять только 128 различных символов.

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

ASCII используется до сих пор, особенно в больших компьютерных системах.

Для более подробного ознакомления, пожалуйста, изучите наш полный код ASCII.
Ссылка.

Атрибут HTML charset используется для указания кодировки символов для документа HTML. Атрибут charset может быть переопределен с помощью атрибута lang любого элемента.

Значения атрибутов: содержит значение, т. е. набор символов, который определяет кодировку символов для документа HTML. Значения:

Пример: Этот пример иллюстрирует использование атрибута charset в метаэлементе.

Атрибут HTML charset в метаэлементе

У меня был шаблон веб-страницы, который был просто:

Но текст в теле (неправильно) интерпретировался моим браузером как latin1. Поэтому я изменил его на:

Каков наилучший способ (самый современный совместимый с браузером и совместимый с предыдущими версиями) указать, что текст на html-странице закодирован в UTF-8?

спросил 6 марта 2012 в 22:47

40 золотых знаков186 серебряных знаков317 бронзовых знаков

ответил 6 марта 2012 в 22:51

Я бы подумал, что в HTML4 так:

Вырезано и вставлено с моей веб-страницы.

ответил 6 марта 2012 г. в 22:50

9 золотых знаков99 серебряных знаков148 бронзовых знаков

39 золотых знаков184 серебряных знака310 бронзовых знаков

Последние несколько часов я потратил на то, чтобы мой веб-сайт прошел проверку HTML 4.01 Strict, и мне это действительно удалось, но все еще есть одно предупреждение, от которого я не могу избавиться. Предупреждение:

Несоответствие кодировки символов!

Кодировка символов, указанная в
заголовок HTTP (iso-8859-1)
отличается от значения в
элемент (utf-8). Я буду использовать значение
из заголовка HTTP (iso-8859-1) для
это подтверждение.

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

# Использовать PHP 5 по умолчанию
Приложение AddHandler/x-httpd-php5 .php
Кодировка AddDefaultCharset UTF-8

Но я испробовал все исправления, представленные на этой странице, и ни одно из них не сработало. Как я могу избавиться от этого предупреждения?

В Firefox, если щелкнуть правой кнопкой мыши на странице и выбрать «Просмотреть информацию о странице», default.html отображается как ISO-8859-1, а все остальные страницы показывают UTF-8.

Все html-файлы были созданы и сохранены точно таким же образом (кодировка символов установлена ​​на UTF-8 без спецификации), но default.html — единственный файл, который не отображается как UTF-8. Поэтому я предполагаю, что сервер делает что-то особенное с файлом default.html, хотя я не уверен, что именно, поскольку в файле .htaccess этого нет.

Итак, вы слышали, что использовать Unicode полезно.
(UTF-8) для ваших страниц, а не устаревшую кодировку символов, такую ​​как Latin1 (Windows 1252 или ISO 8859-1) или Shift_JIS, и вы слышали, что другие делают это, но вы не знаете, как это работает.

Эта страница поможет вам изменить кодировку символов HTML-страницы на UTF-8.

Ответ

Более подробные советы по преобразованию сложных сайтов, программного обеспечения и данных в Unicode см. в статье Миграция на Unicode.

Сохранить данные как UTF-8

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

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

Обратите внимание, что вам, возможно, придется убедиться, что данные не содержат подписи UTF-8,
также известный как метка порядка байтов (BOM).

Укажите кодировку на своей странице

Вы должны изменить объявление кодировки символов в
вашу страницу (или добавьте ее, если вы ее еще не объявили).

Ensure that your server does the right thing

Although your data is in UTF-8 and you have declared it in the page, your server may still be serving the page with an accompanying HTTP header that says it is something else.

Test it by putting the URL of your page in this form. It will take you to the Internationalization Checker. Look in the table for the row with the title HTTP Content-Type, under Character Encoding, and check that it says either UTF-8 or No encoding information found.

If the HTTP Content-Type shows an encoding other than UTF-8 you’ll need to take steps to rectify it, because the declaration in the HTTP header will override information inside the page.

Читайте также:  Настройка домашнего каталога SFTP или SSH Chroot

You should look elsewhere for information about how to declare
character encoding in HTML pages, or how to find out how to check the
character encoding information being sent in an HTTP header.

The charset parameter

Documents transmitted with HTTP that are of type text, such as text/html, text/plain, etc., can send a charset parameter in the HTTP header to specify the character encoding of the document.

It is very important to always label Web documents explicitly. H TTP 1.1 says that the default charset is
ISO-8859-1. But there are too many unlabeled documents in other encodings, so browsers use the reader’s preferred encoding when there is no explicit
charset parameter.

The line in the HTTP header typically looks like this:

Content-Type: text/html; charset=utf-8

In theory, any character encoding that has been registered with IANA can be
used, but there is no browser that understands all of them. The more widely a character encoding is used, the better the chance that a browser will
understand it. A Unicode encoding such as UTF-8 is a good choice for a number of reasons.

Server setup

The appropriate header can also be set in server side scripting languages. For example:

Perl. Output the correct header before any part of the actual page. After the last header, use a double
linebreak, e.g.:
print «Content-Type: text/html; charset=utf-8

«;

Python. Use the same solution as for Perl (except that you don’t need a semicolon at the end).

PHP. Use the header() function before generating any content,
e.g.:
header(‘Content-type: text/html; charset=utf-8’);

Java Servlets. Use the setContentType method on the ServletResponse before obtaining any
object (Stream or Writer) used for output, e.g.:
resource.setContentType («text/html;charset=utf-8»);
If you use a Writer, the Servlet automatically takes care of the conversion from Java Strings to the encoding selected.

Further reading

На сколько бы это глупо не казалось, но для удачного выставления кодировки необходимо выполнить целых 11(!) правил.
Хочу зарание предупредить, если какая-то из настроек в .htaccess повлечет за собой ошибку 500, это значит, что хостинг запретил менять этот параметр на сервере. В таком случае проверьте тот факт, что у Вас UTF-8 и в случае чего обратитесь к админам хостинга.
И для тех, кто попал на эту страницу с вопросами об Ajax: Ajax работает в кодировке UTF-8.

Правило №1: Указываем в HTML верстке в теге первой строчкой, кроме случаев, где мы будем использовать тег

, так как он так же как и кодировка имеет приоритет над расположением, следующий код:

Правило №2: Указываем кодировку для PHP и самого файла, для этого нам необходимо выставить заголовок функцией header(). Выставляем его в самом начале нашего файла (абсолютно в самом начале), сразу после указания уровня вывода ошибок:

<?php
error_reporting(-1);
header(‘Content-Type: text/html; charset=utf-8’);

Правило №3: Кодировка для подключения к к БД MySQL. Устанавливается после подключения к БД и выбора бд (mysql_connect, mysql_select_db). Если у нас модуль mysql:

или улучшенный модуль mysqli:

Правило №4: Кодировка в .htaccess:

Правило №5: Кодировка для библиотеки mb, начиная с версии php 5.4 можно не указывать, так как по умолчанию будет использоваться именно UTF-8. Ну а пока прописываем её в файле .htaccess:

php_value mbstring.internal_encoding UTF-8

Либо в самом PHP, что в итоге выполнит одни и те же действия:

Правило №7: если на данный момент какой-то из текстов был введён на странице или в БД — его необходимо перенабрать. Дело в том, что символ в одной кодировке представляет один набор бит для русских символов, а в другой — другой. Именно поэтому необходимо его либо перенабрать, либо перекодировать. Современные программы имеют возможность перевести текст из одной кодировки в другую. Об этой возможности интересуйтесь в мануалах Ваших программ.

Правило №8: Есть исключение, когда текст приходит к Вам на страницу с другого сайта в другой кодировке. Тогда на PHP есть удобная функция для перевода из одной кодировки в другую:

<?php
$var = iconv(‘utf-8’, ‘windows-1251’, $var); //для переменной $var

Правило №9: Для строковых функций strlen, substr, необходимо использовать их аналоги на библиотеке mb_, а именно: mb_strlen, mb_substr, то есть к функции дописываем mb_ .

Правило №10: Для работы с регулярными выражениями необходимо указывать модификатор u . Это обязательный параметр!

Правило №11: Для CSS файлов указывается кодировка так:

В заключение скажу, что символы в кодировке WIN-1251 состоят из 1 байта, то есть 8 бит, а в свою очередь в кодировке UTF-8 символы могут состоять от 1 до 4 байт, всё дело в том, что кодировка UTF-8 позволяет создавать мультиязычные сайты, так как все существующие в мире символы в ней присутствуют.
Ради любопытства русская буква в кодировке UTF-8 занимает 2 байта, именно поэтому за 1 символ функция strlen возвращает длину 2, то есть 2 байта, а mb_strlen возвращает уже правильную длину в 1 символ.

Question

How should I declare the encoding of my HTML file?

If you need to better understand what characters and character encodings are, see the article Character encodings for beginners. For information about declaring encodings for CSS style sheets, see CSS character encoding declarations.

Quick answer

Always declare the encoding of your document using a meta element with a charset attribute, or using the http-equiv and content attributes (called a pragma directive). The declaration should fit completely within the first 1024 bytes at the start of the file, so it’s best to put it immediately after the opening head tag.

It doesn’t matter which you use, but it’s easier to type the first one. It also doesn’t matter whether you type UTF-8 or utf-8.

Читайте также:  Что тормозит сайт

You should always use the UTF-8 character encoding. ( Remember that this means you also need to save your content as UTF-8.) See what you should consider if you really cannot use UTF-8.

If you have access to the server settings, you should also consider whether it makes sense to use the HTTP header. Note however that, since the HTTP header has a higher precedence than the in-document meta declarations, content authors should always take into account whether the character encoding is already declared in the HTTP header. If it is, the meta element must be set to declare the same encoding.

You can detect any encodings sent by the HTTP header using the Internationalization Checker.

Details

If you have a UTF-8 byte-order mark (BOM) at the start of your file then modern browsers will use that to determine that the encoding of your page is UTF-8. It has a higher precedence than any other declaration, including the HTTP header.

You could skip the meta encoding declaration if you have a BOM, but we recommend that you keep it, since it helps people looking at the source code to ascertain what the encoding of the page is.

Should I declare the encoding in the HTTP header?

Use character encoding declarations in HTTP headers if it makes sense, and if you are able, for any type of content, but in conjunction with an in-document declaration.

Content authors should always ensure that HTTP declarations are consistent with the in-document declarations.

Pros and cons of using the HTTP header

On the other hand, there are a number of potential disadvantages:

So should I use this method?

If serving files via HTTP from a server, it is never a problem to send information about the character encoding of the document in the HTTP header, as long as that information is correct.

On the other hand, because of the disadvantages listed above we recommend that you should always declare the encoding information inside the document as well. An in-document declaration also helps developers, testers, or translation production managers who want to visually check the encoding of a document.

(Some people would argue that it is rarely appropriate to declare the encoding in the HTTP header if you are going to repeat it in the
content of the document. In this case, they are proposing that the HTTP header say nothing about the document encoding. Обратите внимание, что это обычно означает
принятие мер по отключению любых настроек сервера по умолчанию.)

Работа с форматами полиглот и XML

XHTML5: Документ XHTML5 обслуживается как XML и имеет синтаксис XML. Синтаксические анализаторы X ML не распознают объявления кодировки в метаэлементах. Они распознают только объявление XML. Вот пример:

Декларация XML требуется только в том случае, если страница не обслуживается как UTF-8 (или UTF-16), но может быть полезно включить ее, чтобы разработчики, тестировщики или менеджеры по производству переводов могли визуально проверять кодирование документа, глядя на источник.

Разметка полиглота: страница, использующая разметку полиглота, использует подмножество HTML с синтаксисом XML, который может быть проанализирован парсером HTML или XML. Это описано в Polyglot Markup: надежный профиль словаря HTML5.

Поскольку полиглот-документ должен быть в кодировке UTF-8, вам не нужно и не следует использовать декларацию XML. С другой стороны, если файл должен быть прочитан как HTML, вам нужно будет объявить кодировку с помощью метаэлемента, знака порядка байтов или заголовка HTTP.

Поскольку объявление в метаэлементе будет распознаваться только парсером HTML, если вы используете подход с атрибутом содержимого, его значение должно начинаться с text/html;

Если вы используете метаэлемент с атрибутом charset, это не то, что вам нужно учитывать.

Дополнительная информация

Информация в этом разделе относится к вещам, которые вам обычно не нужно знать, но которые включены сюда для полноты картины.

Работа с кодировками, отличными от UTF-8

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

До недавнего времени реестр IANA был местом, где можно было найти имена для кодировок. В реестре IANA есть несколько имен для одной и той же кодировки, и в этом случае вы должны использовать имя, обозначенное как
«предпочтительный».

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

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

Не придумывайте собственные названия кодировок, которым предшествует x-. Это плохая идея, так как
ограничивает интероперабельность.

Работа с устаревшими форматами HTML

HTML 4.01 не определяет использование атрибута charset с элементом meta, но любой современный браузер все равно обнаружит и использует его, даже если страница объявлена ​​как HTML4, а не HTML5. Этот раздел актуален только в том случае, если у вас есть какие-либо другие причины, кроме обслуживания браузера для соответствия более старому формату HTML. В нем описываются любые отличия от раздела «Подробности» выше.

Читайте также:  Браузер Freebsd nginx и решения GNet

Для страниц, обслуживаемых в формате XML, см. Работа с форматами полиглота и XML.

HTML4: как упоминалось выше, для полного соответствия HTML 4.01 вам необходимо использовать директиву pragma, а не атрибут charset.

XHTML 1.x используется как text/html: также требуется директива pragma для полного соответствия HTML 4.01, а не атрибут charset. Вам не нужно использовать объявление XML, так как файл обслуживается как HTML.

XHTML 1.x служил XML: Используйте атрибут encoding объявления XML в первой строке страницы. Убедитесь, что перед ним ничего нет, включая пробелы (хотя метка порядка байтов допустима).

Атрибут charset в ссылке

HTML5 не рекомендует использование атрибута charset в элементе a или link, поэтому вам следует избегать его использования. Он возник в спецификации HTML 4.01 для использования с элементами a, link и script и должен был указывать кодировку документа, на который вы ссылаетесь.

Он был предназначен для использования во встроенном элементе ссылки, подобном этому:

Неверный код. Не копируйте!

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

Этот способ указания кодировки документа имеет самый низкий приоритет (т. е. если кодировка объявлена ​​каким-либо другим способом, это будет проигнорировано). Это означает, что вы также не можете использовать это для исправления неправильных объявлений.

Работа с UTF-16

Согласно результатам выборки Google из нескольких миллиардов страниц, менее 0,01% страниц в Интернете закодированы в UTF-16. U TF-8 составляет более 80% всех веб-страниц, если вы включаете его подмножество, ASCII, и более 60%, если вы этого не делаете. Вам настоятельно не рекомендуется использовать UTF-16 в качестве кодировки страницы.

Если по какой-то причине у вас нет выбора, вот несколько правил объявления кодировки. Они отличаются от таковых для других кодировок.

Спецификация HTML5 запрещает использование элемента meta для объявления UTF-16, поскольку значения должны быть совместимы с ASCII. Вместо этого вы должны убедиться, что у вас всегда есть метка порядка байтов в самом начале файла в кодировке UTF-16. По сути, это декларация в документе.

Кроме того, если ваша страница закодирована как UTF-16, не объявляйте свой файл как «UTF-16BE» или «UTF-16LE», используйте только «UTF-16». Знак порядка байтов в начале вашего файла будет указывать, является ли схема кодирования или . (Это связано с тем, что контент, явно закодированный, скажем, как UTF-16BE, не должен использовать метку порядка байтов, но HTML5 требует метки порядка байтов для страниц в кодировке UTF-16.)

Различия между наборами символов

Спецификация HTML5 поощряет веб-разработчиков использовать символ UTF-8.
набор!

Так было не всегда. Кодировка символов для ранней сети была ASCII.

Позже, от HTML 2.0 до HTML 4.01, ISO-8859-1 был
считается стандартным набором символов.

Вместе с XML и HTML5 наконец появилась UTF-8, которая решила множество проблем с кодировкой символов.

Набор символов ISO-8859-1

ISO-8859-1 идентичен ASCII для значений от 0 до 127.

ISO-8859-1 не использует значения от 128 до 159.

ISO-8859-1 идентичен UTF-8 для значений от 160 до 255.

Атрибут HTML charset

Для правильного отображения HTML-страницы веб-браузер должен знать набор символов, используемый на странице.

Юникод UTF-8

Спецификация HTML5 поощряет веб-разработчиков использовать символ UTF-8.
набор.

Консорциум Unicode разработал стандарты UTF-8 и UTF-16, поскольку наборы символов ISO-8859
ограничена и не совместима с многоязычной средой.

Стандарт Unicode охватывает (почти) все символы, знаки препинания и символы в мире.

Все процессоры HTML5 и XML поддерживают UTF-8, UTF-16, Windows-1252 и ISO-8859.

Для более подробного ознакомления, пожалуйста, изучите: The Complete Unicode Reference.

Набор символов ANSI (Windows-1252)

ANSI идентичен ASCII для значений от 0 до 127.

ANSI имеет собственный набор символов для значений от 128 до 159.

ANSI идентичен UTF-8 для значений от 160 до 255.

Набор символов ASCII

ASCII использует значения от 0 до 31 (и 127) для управляющих символов.

ASCII использует значения от 32 до 126 для букв, цифр и символов.

ASCII не использует значения от 128 до 255.

От ASCII к UTF-8

ISO-8859-1 был набором символов по умолчанию для HTML 4. Этот набор символов
поддерживается 256 различных кодов символов. H TML 4 также поддерживает UTF-8.

ANSI (Windows-1252) был оригинальным набором символов Windows. NSI идентичен
соответствует ISO-8859-1, за исключением того, что ANSI имеет 32 дополнительных символа.

Спецификация HTML5 поощряет веб-разработчиков использовать символ UTF-8.
комплект, охватывающий почти все
символы и символы в мире!

Набор символов UTF-8

UTF-8 идентичен ASCII для значений от 0 до 127.

UTF-8 не использует значения от 128 до 159.

UTF-8 идентичен как ANSI, так и 8859-1 для значений от 160 до 255.

UTF-8 продолжает значение 256 с более чем 10 000 различных
персонажи.

Для более подробного ознакомления изучите наш Полный справочник по набору символов HTML.

Windows-1252 был набором символов по умолчанию в Windows, вплоть до Windows 95.

Это расширение ASCII с добавлением международных символов.

Это
использует полный байт (8 бит) для представления 256 различных символов.

Поскольку Windows-1252 используется в Windows по умолчанию, она поддерживается всеми браузерами.

Для более подробного ознакомления, пожалуйста, изучите: Полное руководство по Windows-1252.

HTML-кодирование (наборы символов)

Для правильного отображения HTML-страницы веб-браузер должен знать
какой набор символов использовать.

Наиболее часто в HTML 4 использовался набор символов ISO-8859-1.

ISO-8859-1 является расширением ASCII с добавлением международных символов.

Все процессоры HTML 4 также поддерживают UTF-8:

Когда браузер обнаруживает ISO-8859-1, он обычно использует по умолчанию Windows-1252,
потому что в Windows-1252 на 32 больше международных символа.

Для более подробного ознакомления, пожалуйста, изучите: The Complete ISO-8859-1 Reference

Оцените статью
Хостинги