Как сделать русский язык в html
Перейти к содержимому

Как сделать русский язык в 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?

Slava Vedenin's user avatar

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.

Valeh Hajiyev's user avatar

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.

Русские странички, не нарушая стандартов, — это просто!

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

  1. Если у вас на страничках стоит выбор кодировок, выкиньте этот кусок HTML кода: он вам больше не понадобиться — отныне всё будет происходить автоматически.
  2. Если у вас странички не в кодировке KOI8-R, перекодируйте их туда каким-нибудь конвертером: для Win95/98/Me, 10/8/7/Vista/XP, Unix, OS/2, DOS. Ничего страшного не произойдёт: если всё дальнейшее вы сделаете правильно, то в таком виде их по-прежнему можно будет редактировать, скажем, в Microsoft FrontPage без всякой заметной разницы. Мало того, в таком виде ваши странички будут одинаково хорошо видны для всех операционных систем без переключателей кодировок.
    1. Проверьте самую первую строчку ваших русских 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).

    1. Запускаем Internet Service Manager;
    2. выбираем требуемый WWW сервер и вызывам его свойства ( Properties );
    3. далее выбираем закладку HTTP Header ;
    4. потом жмём кнопку File Types ;
    5. там создаём/изменяем соответствующий тип так, чтобы в поле Extension было .html , а в поле Type text/html;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
    6. Повторить то же самое для типа .htm
    7. Повторить то же самое для типа .shtm
    8. Создаём/изменяем соответствующий тип так, чтобы в поле Extension было .css , а в поле Type text/css;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
    9. Создаём/изменяем соответствующий тип так, чтобы в поле Extension было .js , а в поле Type text/javascript;charset=koi8-r (обратите внимание на отсутствие пробелов в этой строке);
    1. Content-Type заголовок в протоколе HTTP;
    2. маркер порядка байтов для Unicode-файлов (BOM);
    3. назначение XML;
    4. META тэг;
    5. атрибут 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

    1. Наберите:
      telnet www.yourserver.ru 80
    2. После соединения наберите:
      HEAD /yourpath/yourpage.html HTTP/1.0
      Host: www.yourserver.ru
      (возможно, в некоторых системах придётся набирать вслепую)
    3. После нажмите Enter ещё раз. Вы увидите HTTP-заголовок.
    4. Найдите в нём поле 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

    Пока я творю, я живу!
    Блог посвящен: HTML, CSS, PHP, WordPress, Bootstrap

    Как указать кодировку сайта на HTML. Основы HTML для начинающих. Урок №20

    Как указать кодировку сайта на HTML. Основы HTML для начинающих. Урок №20

    Всем привет!
    Продолжаем изучать основы HTML. В этом уроке мы разберем, как указать HTML кодировку для сайта (веб-страницы).
    Этот урок очень важен, так как незнание того, как указать кодировку для веб-страницы может привести к тому, что вашу страницу не смогут прочитать. Вы спросите: «Это как так, не смогут?».
    Давайте я покажу, как выглядит мой блог с неправильной кодировкой:

    Как указать кодировку сайта на HTML. Основы HTML для начинающих. Урок №20

    Ну как вам? Все ли смогли прочитать ? Хотя, если постараться, то смысл сможете понять по картинкам. Но разве таким сайтом удержишь посетителя?

    Итак, HTML кодировка – это таблицы соответствия кодов и символов алфавита. То есть, наш компьютер по кодировке поменяет код на понятные читабельные буквы .

    Чтобы сообщить браузеру, в какой кодировке находятся символы веб-страницы, необходимо прописать между тегами <head></head> вот такой мета тег:

    Обратите внимание, в коде есть слово «имя кодировки». Здесь нужно указать HTML кодировку.
    Обычно это utf-8 или windows-1251 .

    Кодировка для utf-8:

    Кодировка для windows-1251:

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

    Переходим к практике.

    Как создать HTML документ с
    кодировкой utf-8

    Открывайте стандартный блокнот. «Все программы» => «Стандартные» => «Блокнот» :

    Как создать HTML документ с кодировкой utf-8

    Далее вставляете в блокнот стандартный код HTML:

    Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами <head></head> вот этот мета-тег:

    Вот так должно получиться ( строка №4 ):

    Жмите в блокноте «Файл» => «Сохранит как…» :

    Как создать HTML документ с кодировкой utf-8

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

    Как создать HTML документ с кодировкой utf-8

    Как создать HTML документ с кодировкой windows-1251

    Открывайте стандартный блокнот. «Все программы» => «Стандартные» => «Блокнот» .
    Далее вставляете в блокнот стандартный код HTML:

    Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами <head></head> вот этот мета-тег:

    Вот так должно получиться ( строка №4 ):

    Жмите в блокноте «Файл» => «Сохранит как…» :

    Как создать HTML документ с кодировкой utf-8

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

    Как создать HTML документ с кодировкой utf-8

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

    Для примера в блокнте установите код:

    И укажите при сохранении «ANSI» :

    Как создать HTML документ с кодировкой utf-8

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

    Как создать HTML документ с кодировкой utf-8

    Сохраняйте правильно ваши веб-страници во избежание вот таких результатов

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

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

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

    Используйте языковые тэги из IANA Language Subtag Registry . Вы можете найти тэги также с помощью Language Subtag Lookup.

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

    Детали

    Основы

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

    Обратите внимание, что предпочтительнее использовать html элемент, чем body , так как body элемент не включает в себя текст из head элемента.

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

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

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

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

    Когда XHTML 1.x или страницы Polyglot обрабатываются, как text/html , используйте оба атрибута lang и xml:lang вместе каждый раз, когда вы хотите объявить язык. Атрибут xml:lang — это стандартный способ объявления языковой информации в XML. Убедитесь, что значения обоих атрибутов идентичны.

    <html lang=»fr» xml:lang=»fr» xmlns=»http://www.w3.org/1999/xhtml»>

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

    Если вы обрабатываете ваш документ, как XML (то есть используете MIME type application/xhtml+xml ), то атрибут lang не нужен, будет достаточно атрибута xml:lang .

    <html xml:lang=»fr» xmlns=»http://www.w3.org/1999/xhtml»>

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

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

    Screen snap showing a tooltip containing the word

    Если ваш код выглядит, как указано ниже, то атрибут языка указывает, что испанский — не только язык контента, но и title текста. Это, очевидно, некорректно.

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

    <a lang=»es» title=»Spanish» href=»qa-html-language-declarations.es»> Español </a>

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

    <span title=»Spanish»><a lang=»es» href=»qa-html-language-declarations.es»> Español </a></span>

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

    Если вы хотите указать язык контента, но вокруг него нет никакой разметки, используйте такой элемент, как span или div . Вот пример:

    <p>You’d say that in Chinese as <span lang=»zh-Hans»>中国科学院文献情报中心</span>.</p>

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

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

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

    BCP 47 включает в себя, но выходит за рамки ISO списков кодов языков и стран. Чтобы найти подходящий код, вам нужно обратиться к IANA Language Subtag Registry .

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

    Для краткого, но достаточно тщательного ознакомления с синтаксисом тэгов BCP 47, читайте Языковые тэги в HTML и XML . Если необходима помощь в выборе корректного языкового тэга из множества возможных тэгов и комбинаций, смотрите Выбор тэга языка .

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

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

    Если вы хотите создать метаданные, описывающие скорее язык целевой аудитории страницы, чем язык определенной части текста, реализуйте это с помощью отправки сервером информации в HTTP заголовке Content-Language . Если ваша целевая аудитория говорит более, чем на одном языке, HTTP заголовок позволяет вам использовать список языков, разделённых запятыми.

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

    Content-Language: en, hi, pa

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

    В прошлом многие люди использовали meta элемент с атрибутом http-equiv со значением Content-Language . Из-за давних путаниц и непоследовательных реализаций этого элемента HTML5 спецификация сделала его несоответствующим стандартам HTML, так что вам больше не следует использовать этот элемент.

    Для обратной совместимости, HTML5 описывает алгоритм, с помощью которого язык контента может быть определён из HTTP или meta Content-Language информации при определённых условиях. Как бы то ни было, это только запасной механизм для случаев, когда языковой атрибут отсутствует у html тэга. Если вы используете атрибут языка для html , что следует делать всегда, подобные запасные пути бесполезны.

    Для подробной информации о Content-Language в HTTP и meta элементах читайте HTTP и meta для информации о языке .

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

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

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

    Второе, DOCTYPE , с которого должен начинаться любой HTML может содержать то, что выглядит для некоторых людей, как объявления языка. DOCTYPE в примере ниже содержит текст EN, что означает ‘English’. Это, тем не менее, указывает на язык schema (схемы), связанной с данным документом – это никоим образом не указывает на непосредственно язык самого документа.

    <!DOCTYPE html PUBLIC «-//W3C//DTD XHTML 1.0 Transitional//EN» «http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd»>

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

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

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

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

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

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