Русские странички, не нарушая стандартов, — это просто!
Здесь приведена пошаговая инструкция правильной подготовки ваших русских страничек для WWW применительно к кодировке KOI8-R, не при каких условиях не требующая от пользователя выбора кодировки вручную.
- Если у вас на страничках стоит выбор кодировок, выкиньте этот кусок HTML кода: он вам больше не понадобиться — отныне всё будет происходить автоматически.
- Если у вас странички не в кодировке KOI8-R, перекодируйте их туда каким-нибудь конвертером: для Win95/98/Me, 10/8/7/Vista/XP, Unix, OS/2, DOS. Ничего страшного не произойдёт: если всё дальнейшее вы сделаете правильно, то в таком виде их по-прежнему можно будет редактировать, скажем, в Microsoft FrontPage без всякой заметной разницы. Мало того, в таком виде ваши странички будут одинаково хорошо видны для всех операционных систем без переключателей кодировок.
-
- Проверьте самую первую строчку ваших русских HTML документов, она должна выглядеть так (для стандарта HTML5): или, для стардарта HTML 4.01, так: Если такой строчки нет, или номер после слова HTML меньше 4.01 , вставьте её в самое начало. Для страничек с фреймами будет несколько иной вариант:
Замените следующий за ней тэг <HTML> на таг <HTML lang=»ru»> , это укажет, что ваш документ на русском языке, позволит вам включать автопереносы в стилях для некоторых браузеров и облегчит жизнь некоторым поисковикам.
Примечание для специалистов: атрибут lang определён только начиная с HTML 4.0, так что упомянутые выше DTD обязательны.
Спросите вашего веб-мастера, что за штука стоит у вас в качестве веб-сервера, если он ответит:
что Apache или Apache/RUS ,
в самом верхнем каталоге, содержащем ваши странички, создайте файл с именем .htaccess , доступный всем на чтение с такими строчками:
- Для версий Apache, начиная с 1.3.12:
- Для версий Apache, начиная с 1.3.10:
- Для более старых версий Apache (или если версия вам неизвестна):
Если файл .htaccess уже есть, просто добавьте туда эти строчки.
Записанное в .htaccess распостраняется на все подкаталоги вниз по дереву.
При таких настройках не обязательно (но можно) указывать язык тэгом <HTML LANG=ru> как описано выше. Указание языка внутри HTML документа имеет приоритет над указанием для сервера. Прочие тонкости указания языка и переключения между несколькими языками внутри одного HTML документа можно посмотреть подробнее в разделе «Language information and text direction» описания стандарта HTML.
Так как для текстовых ( *.txt ) документов никак нельзя указать язык внутри документа, указание для сервера это единственная альтернатива.
Если у вас на сервере стоит Apache/RUS, то рекомендуется отключить всякую автоматическую перекодировку, добавив в .htaccess директиву (работает начиная с версии Apache/RUS PL20).
ПРЕДУПРЕЖДЕНИЕ: в последних версиях Apache обработка файлов .htaccess по умолчанию выключена в главной конфигурации (директивой AllowOverride None ), т.е. ваши установки не будут иметь никакого эффекта. В этом случае попросите вебмастера включить такую обработку для вашего каталога, добавив директиву в соответствующую секцию <Directory . > конфигурации Apache.
что NCSA ,
в каждом каталоге, содержащем ваши странички, заведите файл с именем .htaccess , доступный всем на чтение с такими строчками: Если файл .htaccess уже есть, просто добавьте туда эти строчки.
Выше подразумевается, что ваши HTML документы заканчиваются на .html , если они заканчиваются на .htm , поменяйте конец строки AddType в .htaccess на .htm
что CERN ,
для каждого вашего каталога с русскими страничками создайте подкаталог .web , в него положите файлы с именами, сконструированными добавлением суффикса .meta к именам в главном каталоге. Каталог .web и файлы в нём должны быть доступны всем на чтение. Например, файлу index.html соответствует файл .web/index.html.meta и т.д. Каждый такой файл должен содержать следующую строчку (для HTML файлов) или (для текстовых файлов) или (для файлов стилей) или (для скриптов JavaScript).
- Запускаем Internet Service Manager;
- выбираем требуемый WWW сервер и вызывам его свойства ( Properties );
- далее выбираем закладку HTTP Header ;
- потом жмём кнопку File Types ;
- там создаём/изменяем соответствующий тип так, чтобы в поле Extension было .html , а в поле Type text/html;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
- Повторить то же самое для типа .htm
- Повторить то же самое для типа .shtm
- Создаём/изменяем соответствующий тип так, чтобы в поле Extension было .css , а в поле Type text/css;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
- Создаём/изменяем соответствующий тип так, чтобы в поле Extension было .js , а в поле Type text/javascript;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
- Content-Type заголовок в протоколе HTTP;
- маркер порядка байтов для Unicode-файлов (BOM);
- назначение XML;
- META тэг;
- атрибут CHARSET (или TYPE с указанием charset ) в ссылке.
Если вы не знаете, как указать кодировку в вашем HTTP сервере, вам придётся редактировать сами ваши странички. Если ваши HTML странички обрабатываются PHP используйте:
<?php header(‘Content-type: text/html; charset=KOI8-R’); ?>
в самом начале файла. Если нет, а также для остальных типов файлов см. метод без вмешательства в конфигурацию сервера ниже.
метод без вмешательства в конфигурацию сервера
В секцию <HEAD> каждого HTML документа вставьте самой первой директивой следующий тэг:
<META HTTP-EQUIV=»Content-Type» CONTENT=»text/html; charset=KOI8-R»>
Для стандарта HTML5 можно использовать предыдущую строку или сокращённую форму:
Т.е каждый ваш документ должен будет выглядеть так (пример для стандарта HTML5):
В начало файлов стилей ( *.css ) вставьте директиву:
Указание кодировки для текстовых файлов ( *.txt ) и JavaScript ( *.js ) скриптов без вмешательства в конфигурацию сервера несколько затруднительно и возможно только для внутренних ссылок. При внешних ссылках не в указанном ниже формате они будут отдаваться в неверной кодировке (что может, в каких-то случаях, компенсироваться алгоритмами автоугадывания конкретного браузера, а может и нет).
В стандарте HTML 4.01 вы можете использовать следующее:
<A CHARSET=»KOI8-R» HREFLANG=»ru»
HREF >file.txt</A>В стандарте HTML5 то же самое пишется несколько по-другому:
<A TYPE=»text/plain; charset=KOI8-R» HREFLANG=»ru»
HREF >file.txt</A>Для скриптов на JavaScript в HTML 4.01 и HTML5:
<SCRIPT TYPE=»text/javascript» CHARSET=»KOI8-R»
src ></SCRIPT>Как проверить, удалось ли проставить кодировку и язык в HTTP заголовке?
Допустим, ваша страничка называется http://www.yourserver.ru/yourpath/yourpage.html
- Наберите:
telnet www.yourserver.ru 80 - После соединения наберите:
HEAD /yourpath/yourpage.html HTTP/1.0
Host: www.yourserver.ru
(возможно, в некоторых системах придётся набирать вслепую) - После нажмите Enter ещё раз. Вы увидите HTTP-заголовок.
- Найдите в нём поле Content-Type и проверьте, что там стоит не просто text/html , а
text/html; charset=koi8-r
Вопросы и ответы
Чтобы устранить всякого рода кривотолки по поводу того, надо или нет ставить charset , привожу в явном виде цитаты из Hypertext Transfer Protocol — HTTP/1.1 (RFC 2616) , имеющие отношение к вопросу:
3.4.1 Missing Charset
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 документов (англ.) и в принципах работы с кодировками. Также можете ознакомиться с нашими впечатлениями по поводу текущего положения вещей в русскоязычной паутине и предварительным исследованием.
Полезный ресурс о локализации, кодировках, символах и т.п. — «Локализация, как она есть».
HTML in Russian
I have to design a Russian version of a web. I get the text from a translator. I copy it in the code of the Dreamweaver but it doesn’t work.
I have the usual head:
What should I do?
4 Answers 4
You should change encoding of your file to UTF-8. You can do this process when you Save As file in Notepad or you can use Notepad++(Encoding -> Encode in UTF-8) for it.

The document http://www.mig-marketing.com/proves/nando/ru/ contains Russian text in an image only, but it links to http://www.mig-marketing.com/proves/nando/ru/firma.html which contains (in addition to text in an image) Russian text in ISO-8859-5 (= ISO Latin/Cyrillic) encoding. This encoding is declared in a meta tag, but the problem is that the declaration has no effect, since HTTP headers take preference over them, and they say
(You can conveniently check the HTTP response headers using Firefox with Web Developer Extension and selecting Information → View Response Headers.)
To fix this, contact the web server admin or try and fix it yourself, if the Apache settings allow the use of per-directory .htaccess files, in which case just create a file with that name (including the leading dot) in the directory containing the Russian files and enter the text
This would then make the server send all .html files in that directory with HTTP headers that specify them as ISO-8859-5 encoded.
Как подключить русский язык в html
Пока я творю, я живу!
Блог посвящен: HTML, CSS, PHP, Wordpress, Bootstrap

Как указать кодировку сайта на HTML. Основы HTML для начинающих. Урок №20
Всем привет!
Продолжаем изучать основы HTML. В этом уроке мы разберем, как указать HTML кодировку для сайта (веб-страницы).
Этот урок очень важен, так как незнание того, как указать кодировку для веб-страницы может привести к тому, что вашу страницу не смогут прочитать. Вы спросите: «Это как так, не смогут?».
Давайте я покажу, как выглядит мой блог с неправильной кодировкой:
Ну как вам? Все ли смогли прочитать ? Хотя, если постараться, то смысл сможете понять по картинкам. Но разве таким сайтом удержишь посетителя?
Итак, HTML кодировка – это таблицы соответствия кодов и символов алфавита. То есть, наш компьютер по кодировке поменяет код на понятные читабельные буквы .
Чтобы сообщить браузеру, в какой кодировке находятся символы веб-страницы, необходимо прописать между тегами <head></head> вот такой мета тег:
Обратите внимание, в коде есть слово «имя кодировки». Здесь нужно указать HTML кодировку.
Обычно это utf-8 или windows-1251 .Кодировка для utf-8:
Кодировка для windows-1251:
Если забыть указать браузеру, в какой кодировке сайт или веб-страница, то браузер попытается определить кодировку автоматически, но не всегда у него это выходит правильно. В итог результат будет такой, который я показал на картинке выше.
Переходим к практике.
Как создать HTML документ с
кодировкой utf-8Открывайте стандартный блокнот. «Все программы» => «Стандартные» => «Блокнот» :

Далее вставляете в блокнот стандартный код HTML:
Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами <head></head> вот этот мета-тег:
Вот так должно получиться ( строка №4 ):
Жмите в блокноте «Файл» => «Сохранит как…» :

Там, где пункт «Имя файла» напишите название веб-страницы на латинице и с расширением «.html» . Я думю, вы это помните еще с первых уроков.
Там, где пункт «Кодировка:» укажите «UTF-8» .
Жмите «Сохранить» :
Как создать HTML документ с кодировкой windows-1251
Открывайте стандартный блокнот. «Все программы» => «Стандартные» => «Блокнот» .
Далее вставляете в блокнот стандартный код HTML:Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами <head></head> вот этот мета-тег:
Вот так должно получиться ( строка №4 ):
Жмите в блокноте «Файл» => «Сохранит как…» :

Там, где пункт «Имя файла» напишите название веб-страницы на латинице и с расширением «.html» . Я думю, вы это помните еще с первых уроков.
Там, где пункт «Кодировка:» укажите «ANSI» .
Жмите «Сохранить» :
Большинство вебмастеров выбирают кодировку UTF-8 . Причины говорить не буду, так как боюсь нагрузить вас информацией, которая на вашем этапе познания HTML еще не нужна.
Для примера в блокнте установите код:
И укажите при сохранении «ANSI» :

Так как это неправильно, результат будет вот таким:

Сохраняйте правильно ваши веб-страници во избежание вот таких результатов
Как подключить русский язык в html
Глобальный атрибут lang (от англ. «language» ‒ «язык») позволяет задать язык элемента и для нередактируемых элементов, и для редактируемых элементов, которые заполняются пользователем. Данный атрибут в элементе <html> устанавливает язык для всего текста на странице. Авторам рекомендуется указывать атрибут lang в элементе html, указав приоритетный язык документа, что помогает инструментам синтеза речи и инструментам перевода. В качестве задаваемого значения должно выступать значение допустимое документом BCP 47.
Синтаксис
Значения атрибута
Если значением атрибута является пустая строка lang = «» , то язык устанавливается на неизвестный, а если значение атрибута недопустимо в соответствии с BCP47, он считается недействительным. Полный синтаксис BCP47 достаточно сложен, чтобы указывать специфические языковые диалекты, но в большинстве случаях это не требуется. Так предусмотрено указание через дефис (-) подверсии языка (версия языка: en-us, zh-gan; набор символов для написания: sr-Latn ‒ сербский-латиница).
Имеется три наиболее распространенных вида субтега:
Языковой субтег Обязательный. Все языковые тэги должны начинаться с субтэга основного языка. 2-или-3-символьный код, который определяет базовый язык, обычно записываемый строчными буквами. Например, код языка для английского — en , а код для Бадеши — bdz .
Субтеги письменности Необязательный. Субтеги письменности должны быть использованы в качестве части языкового тэга только тогда, когда необходимо передать какую-то отличительную информацию через тэг. Обычно это случаи, когда один язык использует различные типы письма или когда контент был записан с помощью нетипичной для данного языка письменности (например, русский текст, написанный латиницей, будет иметь такой тег: ru-Latn). Субтеги письменности всегда состоят из четырёх букв, и должны идти после любых субтегов языка или диалекта и до всех других субтегов. Этот субтег определяет систему записи, используемую для языка, и всегда имеет длину 4 символа, причем первая буква заглавная. Например, французский, написаный шрифтом Брайле — fr-Brail а ja-Kana — японский, написанный с алфавитом катаканы. Если язык написан весьма типичным способом, например, английский в латинском алфавите, нет необходимости использовать этот субтег.
Субтеги региона Необязательный. Этот субтег определяет диалект базового языка из определенного места и представляет собой либо 2 прописные буквы , соответствующие коду страны, либо 3 числа, соответствующие области, не относящейся к стране. Субтэги региона связывают выбранный вами субтэг языка с определённым регионом мира. Субтэги региона должны идти после всех субтэгов языка и письменности. Как и субтэги письменности, субтэги региона следует использовать только, если они вносят информацию, необходимую, чобы отличить этот языковой тэг от другого; если нет — отбрасывайте его. Например, en-GB может быть полезным отличием при проверке правописания, но субтэг региона в ja-JP вряд ли полезен, если только вы намеренно не подчёркиваете, что это не японский, используемый в других частях мира. Есть 2 типа субтэгов региона: двухбуквенные коды и коды, состоящие из трёх цифр. Последние, как правило, определяют многонациональные регионы, а не конкретные страны. Например es-ES означает испанский, на котором говорят в Испании, тогда, как es-419 означает испанский, распространённый в Латинской Америке Субтег письменности предшествует региону, если присутствуют оба, например, ru-Cyrl-BY является русским, написанным на кириллице, как говорят в Беларуси.
Даже если атрибут lang установлен, он нен учитывется, если установлен атрибут xml:lang , т.к. он имеет больший приоритет.
Для CSS псевдо-класса :lang два неправильных значения различаются, если их имена различны. Так, значение :lang(es) соответствует и lang=»es-ES» , и lang=»es-419″ , а вот значение :lang(xyzzy) не будет соответствовать lang=»xyzzy-Zorp!» .