Русский язык в html коде

Объявление языка в HTML

Целевая аудитория: HTML кодеры, веб-разработчики (PHP, JSP, и т. д.), менеджеры веб-проектов, а также все, кто хочет лучше понимать, как объявлять язык текста на веб-странице.

Вопрос

Как установить язык содержимого моей HTML страницы?

Краткий ответ

Всегда используйте языковой атрибут тэга html для объявления языка по умолчанию на странице. Если страница содержит контент на другом языке, добавляйте языковой атрибут к элементам, окружающим этот контент.

Используйте lang атрибут для HTML страниц и xml:lang атрибут для страниц XML. Для XHTML 1.x и документов HTML5 Polyglot используйте оба атрибута вместе.

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

Детали

Основы

Выбор корректного атрибута

Если ваш документ HTML (то есть обрабатывается, как text/html ), используйте lang атрибут для установки языка документа или блока текста. Например, следующий код установит французский языком по умолчанию:

Атрибут xml:lang не особо полезен для обработки HTML файлов, но он будет перекрывать значение lang атрибута каждый раз, когда вы обрабатываете документ, как XML. Атрибут lang разрешен синтаксисом XHTML и может быть распознан браузерами. Однако, когда используются другие синтаксические анализаторы XML (например, функция lang() в XSLT), вы не можете полагаться на то, что атрибут lang будет распознан.

Что, если содержимое элемента и значения его атрибутов на разных языках?

Иногда язык текста в атрибутах и язык непосредственно контента элемента различаются. Например, в правом верхнем углу этой статьи расположен список ссылок на другие переводы данной страницы. Текст ссылки отображает язык целевой страницы, но связанный title атрибут содержит подсказку на языке текущей страницы:

Русский язык в html коде. Смотреть фото Русский язык в html коде. Смотреть картинку Русский язык в html коде. Картинка про Русский язык в html коде. Фото Русский язык в html коде

Вместо этого, перенесите языковой атрибут в другой элемент, как показано в данном примере, в котором span элемент наследует en язык по умолчанию, установленный у html элемента.

Что если нет подходящего элемента для того, чтобы прицепить атрибут языка?

Выбор значений языка

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

Правила создания языковых атрибутов описываются IETF спецификацией, которая называется BCP 47. Помимо описания использования простых тэгов языка таких, как en (английский) или fr (французский), BCP 47 описывает, как сочетать языковые тэги, что позволяет вам указывать региональные диалекты, скрипты и другие варианты, относящиеся к данному языку.

Неофициальная утилита Language Subtag Lookup предоставляет удобный фронтенд инструментарий для IANA registry.

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

Указание метаданных о языке аудитории

Это пример HTTP заголовка, объявляющего ресурс смесью английского, хинди панджаби языков:

Content-Language: en, hi, pa

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

Различные вещи, которые не относятся к делу

Вероятно, стоит упомянуть ещё несколько моментов, которые не имеют отношения к этой дискуссии.

Первое, невозможно объявить язык с помощью CSS.

Третье, иногда люди предполагают, что информация о естественном языке может быть получена из кодировки символов. Тем не менее, кодировка символов не позволяет однозначно идентифицировать естественный язык. Должно быть взаимно однозначное сопоставление между кодировкой и языком, чтобы это сработало, а его нет. Одна кодировка может быть использована многими языками, например Latin 1 (ISO-8859-1) используется и французским, и английским, а ещё многими другими языками. В дополнение, кодировка может отличаться в рамках одного языка, например арабский может использовать ‘Windows-1256’ или ‘ISO-8859-6’ или ‘UTF-8’.

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

В некоторых текстах, таких, как арабский и иврит, отображаемый текст читается в основном справа налево, хотя числа и иностранные термины отображаются слева направо. Необходима разметка, такая, как dir атрибут, для объявления right-to-left содержания. И в некоторых случаях разметка необходима для правильного отображения двунаправленного текста, но это невозможно сделать с помощью разметки языка.

То же самое относится к направлению текста. Как и в случае с кодировками, не всегда существует соответствие между языком и текстом, в том числе его направлением. Например, азербайджанский может быть записан справа налево (арабская письменность) и слева направо (латиница и кириллица), соответственно код языка az может относится к обоим вариантам. Дополнительно, разметка направления текста применяет к тексту целый ряд различных значений, в то время, как язык является простым переключателем, который не соответствует поставленным задачам.

Источник

Русский язык в html коде

Поэтому наличие на Интернетовской странице русских и английских букв не означает, что там тексты 2-х разных кодировок.
Нет, это одна, кириллическая кодировка, просто в неё, кроме русских букв, входят и английские.
Такая страница не считается в терминах

Кстати, каждый шрифт тоже сделан под определённую кодировку, а т.к. любая кодировка содержит набор символов ASCII, то любой шрифт всегда содержит английские буквы в дополнение к национальным.

При создании HTML-текста кириллической кодировки (то есть, текст с русскими, и если надо, английскими буквами), разработчик использует кириллический шрифт и соответствующую раскладку клавиатуры.

Как писать по-русски, используя шрифты и клавиатурные средства Windows (даже если это нерусская версия Windows) описано в разделе моего сайта.

Примечание. Кириллица в заголовке страницы, т.е. HTML тэг TITLE
Если разработчик или будущие пользователи работают под не русской Windows, то не стоит использовать кириллицу в не видна она будет во многих случаях.

Например, Internet Explorer (а также и новее, и и новее)
сможет показать кириллицу в TITLE под нерусской но не под нерусской
а не сможет показать вообще ни под какой нерусской Windows.

У меня есть тестовая страница с русским в TITLE (делалась для моей инструкции по Netscape, чтобы показать, как русский в Bookmarks работает): «Кириллица в TITLE»

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

Если Вы работает с таким редактором (который сам генерирует HTML код/тэги), то тут надо быть очень осторожным, научиться настраивать редактор для корректной генерации текстов с кириллицей.
Часто бывает так, что разработчик не настроил редактор, и редактор, ‘думая’, что в кодировке «Western», генерирует страницу, где кириллица ‘испорчена’.

То есть, редактор по умолчанию генерировал страницу кодировки
charset=windows-1252 или charset=iso-8859-1 или charset=us-ascii
т.к. автор не указал, что создает страницу кодировки

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

Настройка WYSIWYG HTML-редактора на создание русской страницы обеспечит выполнение вышеизложенных требований. Ниже приведены методы настройки для нескольких редакторов.

Как настроить WYSIWYG HTML редактор для генерации корректного кириллического HTML

Каждый редактор требует своей особой настройки, и разработчик должен отыскать способ настройки как начнёт вводить текст, а иначе его текст может просто-напросто пропасть, одни ‘вопросики’ будут

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

Кроме того, Front Page 2000 вставит в HTML текст строку с указанием кодировки:
windows-1251 «>

Там надо выбрать кириллической шрифт через меню

Сам я не работал с DW, но собрал информацию (ниже).

Итак, настройка на работу с русским HTML:

Файл заново загрузится, но теперь DW уже будет знать, что за кодировка у этого файла, и всё будет в порядке.

Созданный HTML файл будет содержать нормальные русские буквы.
Кроме того, Word вставит в файл строку с указанием кодировки (это можно увидеть, использую опцию
windows-1251 «>

2. Конвертация обычного документа (.doc) в HTML

Созданный HTML файл будет содержать нормальные русские буквы.
Кроме того, Word вставит в файл строку с указанием кодировки (это можно увидеть, использую опцию
windows-1251 «>

Созданный HTML файл будет содержать нормальные русские буквы.
Кроме того, Word вставит в файл строку с указанием кодировки (это можно увидеть, использую опцию
windows-1251 «>

Вышеизложенное позволит создать нормальный и беспроблемный кириллический HTML текст.

Источник

HTML кодировки

Чтобы правильно отобразить html-документ, браузер должен знать какая кодировка символов использовалась при создании документа.
ASCII — одна из самых старых компьютерных кодировок, в которой каждому символу соответствует строго определенное число. Например, символу «a» соответствует число 97, а символу «A» — число 65.
Эта аббревиатура расшифровывается как American Standard Code for Information Interchange (американская стандартная кодировочная таблица для печатных символов и некоторых специальных кодов).
ASCII — это однобайтовая кодировка, в которую изначально заложено всего 128 символов: буквы латинского алфавита, арабские цифры и т.д.
Вы можете посмотреть на полный комплект Печатаемых символов ASCII.

Позже ASCII была расширена (изначально она не использовала все 8 бит), поэтому появилась возможность использовать уже не 128, а 256 (2 в 8 степени) различных символов, которые можно закодировать в одном байте информации.
Такое усовершенствование позволило добавлять в кодировку ASCII символы национальных языков разных стран, помимо уже существующей латиницы.
Вариантов расширенной кодировки ASCII существует очень много по причине того, что языков в мире тоже немало. Думаю, что многие из вас слышали о такой кодировке, как KOI8 (Код Обмена Информацией, 8 бит) — это тоже расширенная кодировка ASCII. KOI8 включала в себя цифры, буквы латинского и русского алфавита, а также знаки пунктуации, спецсимволы и псевдографику.

Кодировка ISO

Организация Международных стандартов (International Standards Organization) создала диапазон кодировок для различных алфавитов/языков.

Кодировки серии ISO 8859

КодировкаОписаниеISO 8859-1 (Latin-1)Расширенная латиница, включающая символы большинства западноевропейских языков (английский, датский, ирландский, исландский, испанский, итальянский, немецкий, норвежский, португальский, ретороманский, фарерский, шведский, шотландский (гэльский) и частично голландский, финский, французский), а также некоторых восточноевропейских (албанский) и африканских языков (африкаанс, суахили). В Latin-1 отсутствуют знак евро и заглавная буква Ÿ. Эта кодовая страница считается кодировкой по умолчанию для HTML-документов и сообщений электронной почты. Также этой кодовой странице соответствуют первые 256 символов Юникода.ISO 8859-2 (Latin-2)Расширенная латиница, включающая символы центральноевропейских и восточноевропейских языков (боснийский, венгерский, польский, словацкий, словенский, хорватский, чешский). В Latin-2, как и в Latin-1, отсутствуют знак евро.ISO 8859-3 (Latin-3)Расширенная латиница, включающая символы южноевропейских языков (мальтийский, турецкий и эсперанто).ISO 8859-4 (Latin-4)Расширенная латиница, включающая символы североевропейских языков (гренландский, эстонский, латышский, литовский и саамские языки).ISO 8859-5 (Latin/Cyrillic)Кириллица, включающая символы славянских языков (белорусский, болгарский, македонский, русский, сербский и частично украинский).ISO 8859-6 (Latin/Arabic)Символы, используемые в арабском языке. Символы других языков с письмом на основе арабского не поддерживаются. Для корректного отображения текста в кодировке ISO 8859-6 требуется поддержка двунаправленного письма и контекстно-зависимых форм символов.ISO 8859-7 (Latin/Greek)Символы современного греческого языка. Может использоваться также для записи древнегреческих текстов в монотонической орфографии.ISO 8859-8 (Latin/Hebrew)Символы современного иврита. Используется в двух вариантах: с логическим порядком следования символов (требует поддержки двунаправленного письма) и с визуальным порядком следования символов.ISO 8859-9 (Latin-5)Вариант Latin-1, в котором редко используемые символы исландского языка заменены на турецкие. Используется для турецкого и курдского языков.ISO 8859-10 (Latin-6)Вариант Latin-4, более удобный для скандинавских языков.ISO 8859-11 (Latin/Thai)Символы тайского языка.ISO 8859-13 (Latin-7)Вариант Latin-4, более удобный для балтийских языков.ISO 8859-14 (Latin-8)Расширенная латиница, включающая символы кельтских языков, таких как шотландский (гэльский) и бретонский.ISO 8859-15 (Latin-9)Вариант Latin-1, в котором редко используемые символы заменены на необходимые для полной поддержки финского, французского и эстонского языков. Кроме того, в Latin-9 был добавлен знак евро.ISO 8859-16 (Latin-10)Расширенная латиница, включающая символы южноевропейских и восточноевропейских (албанский, венгерский, итальянский, польский, румынский, словенский, хорватский), а также некоторых западноевропейских языков (ирландский в новой орфографии, немецкий, финский, французский). Как и в Latin-9, в Latin-10 был добавлен знак евро.

Для документов на английском и большинстве других западноевропейских языков, широко поддерживается кодирование ISO-8859-1.

Для HTML4:

Для HTML5:

Примером ANSI-кодировки является всем известная Windows-1251.

Windows-1251 выгодно отличается от других 8 битных кириллических кодировок (таких как CP866 и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только знак ударения). Она также содержит все символы для других славянских языков: украинского, белорусского, сербского, македонского и болгарского.
Ниже приведены десятичные значения символов кодировки Windows-1251.

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

Кодировка Windows-1251 (CP1251)

.0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F8.Ђ
402Ѓ
403
201Aѓ
453
201E
2026
2020
2021
20AC
2030Љ
409
2039Њ
40AЌ
40CЋ
40BЏ
40F9.ђ
452
2018
2019
201C
201D
2022
2013
2014
2122љ
459
203Aњ
45Aќ
45Cћ
45Bџ
45FA.A0Ў
40Eў
45EЈ
408¤
A4Ґ
490¦
A6§
A7Ё
401©
A9Є
404«
AB¬
AC­
AD®
AEЇ
407B.°
B0±
B1І
406і
456ґ
491µ
B5
B6·
B7ё
451
2116є
454»
BBј
458Ѕ
405ѕ
455ї
457C.А
410Б
411В
412Г
413Д
414Е
415Ж
416З
417И
418Й
419К
41AЛ
41BМ
41CН
41DО
41EП
41FD.Р
420С
421Т
422У
423Ф
424Х
425Ц
426Ч
427Ш
428Щ
429Ъ
42AЫ
42BЬ
42CЭ
42DЮ
42EЯ
42FE.а
430б
431в
432г
433д
434е
435ж
436з
437и
438й
439к
43Aл
43Bм
43Cн
43Dо
43Eп
43FF.р
440с
441т
442у
443ф
444х
445ц
446ч
447ш
448щ
449ъ
44Aы
44Bь
44Cэ
44Dю
44Eя
44F

Кодировки стандарта UNICODE

Кодировка UTF-8 является универсальной и имеет внушительный резерв на будущее. Это делает ее наиболее удобной кодировкой для использования в интернете.

Источник

Здесь приведена пошаговая инструкция правильной подготовки ваших русских страничек для WWW применительно к кодировке KOI8-R, не при каких условиях не требующая от пользователя выбора кодировки вручную.

Примечание для специалистов: атрибут lang определён только начиная с HTML 4.0, так что упомянутые выше DTD обязательны.

Что надо сделать дополнительно в случае использования нескольких языков в одном HTML документе и прочие подробности см. в разделе «Language information and text direction» описания стандарта HTML.

Спросите вашего веб-мастера, что за штука стоит у вас в качестве веб-сервера, если он ответит:

что Apache или Apache/RUS ,

При таких настройках не обязательно (но можно) указывать язык тэгом как описано выше. Указание языка внутри HTML документа имеет приоритет над указанием для сервера. Прочие тонкости указания языка и переключения между несколькими языками внутри одного HTML документа можно посмотреть подробнее в разделе «Language information and text direction» описания стандарта HTML.

Так как для текстовых ( *.txt ) документов никак нельзя указать язык внутри документа, указание для сервера это единственная альтернатива.

что NCSA ,

что CERN ,

Если вы не знаете, как указать кодировку в вашем HTTP сервере, вам придётся редактировать сами ваши странички. Если ваши HTML странички обрабатываются PHP используйте:

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

метод без вмешательства в конфигурацию сервера

В секцию каждого HTML документа вставьте самой первой директивой следующий тэг:

Для стандарта HTML5 можно использовать предыдущую строку или сокращённую форму:

Т.е каждый ваш документ должен будет выглядеть так (пример для стандарта HTML5):

В начало файлов стилей ( *.css ) вставьте директиву:

Указание кодировки для текстовых файлов ( *.txt ) и JavaScript ( *.js ) скриптов без вмешательства в конфигурацию сервера несколько затруднительно и возможно только для внутренних ссылок. При внешних ссылках не в указанном ниже формате они будут отдаваться в неверной кодировке (что может, в каких-то случаях, компенсироваться алгоритмами автоугадывания конкретного браузера, а может и нет).

В стандарте HTML 4.01 вы можете использовать следующее:

В стандарте HTML5 то же самое пишется несколько по-другому:

Для скриптов на JavaScript в HTML 4.01 и HTML5:

Как проверить, удалось ли проставить кодировку и язык в HTTP заголовке?

Допустим, ваша страничка называется http://www.yourserver.ru/yourpath/yourpage.html

Вопросы и ответы

Some HTTP/1.0 software has interpreted a Content-Type header without charset parameter incorrectly to mean «recipient should guess.» Senders wishing to defeat this behavior MAY include a charset parameter even when the charset is ISO-8859-1 and SHOULD do so when it is known that it will not confuse the recipient.

Unfortunately, some older HTTP/1.0 clients did not deal properly with an explicit charset parameter. HTTP/1.1 recipients MUST respect the charset label provided by the sender; and those user agents that have a provision to «guess» a charset MUST use the charset from the content-type field if they support that charset, rather than the recipient’s preference, when initially displaying a document. See section 3.7.1.

3.7.1 Canonicalization and Text Defaults

The «charset» parameter is used with some media types to define the character set (section 3.4) of the data. When no explicit charset parameter is provided by the sender, media subtypes of the «text» type are defined to have a default charset value of «ISO-8859-1» when received via HTTP. Data in character sets other than «ISO-8859-1» or its subsets MUST be labeled with an appropriate charset value. See section 3.4.1 for compatibility problems.

Подробности и обоснования смотрите в разделе по написанию русских HTML документов (англ.) и в принципах работы с кодировками. Также можете ознакомиться с нашими впечатлениями по поводу текущего положения вещей в русскоязычной паутине и предварительным исследованием.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *