Руски страници, без да се нарушават стандартите - това е лесно!

Ето инструкция стъпка по стъпка за правилната подготовка на вашите руски страници за 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, поставете го в самото начало. За страници с рамки ще има малко по-различна опция:

    Заменете следващия таг с маркер, това ще означава, че документът ви е на руски език, ще ви позволи да активирате автоматично пренасяне на тирета в стилове за някои браузъри и ще улесни живота на някои търсачки.

    Забележка за експерти: атрибутът lang е дефиниран само от HTML 4.0, така че горните DTD са задължителни.

    Какво трябва да се направи допълнително в случай на използване на няколко езика в един HTML документ и други подробности, вижте раздела „Информация за езика и посока на текст“ в описанието на HTML стандарта.

    Попитайте вашия уеб администратор какво нещо имате като уеб сървър, ако той отговори:

    какво е Apache или Apache/RUS ,

    в най-горната директория, съдържаща вашите страници, създайте файл, наречен .htaccess, четим от всички, със следните редове:

    • За версии на Apache от 1.3.12:
    • За версии на Apache от 1.3.10:
    • За по-стари версии на Apache (или ако не знаете версията):

    Ако вече имате .htaccess файл, просто добавете тези редове там.

    Написано в .htaccess се разпространява във всички поддиректории надолу по дървото.

    При такива настройки не е необходимо (но е възможно) да се посочва езикът с етикета, както е описано по-горе. Посочването на езика в HTML документа има предимство пред посочването на сървъра. Други тънкости при определяне на езика и превключване между няколко езика в рамките на един HTML документ могат да бъдат намерени по-подробно в раздела "Информация за езика и посока на текст" на описанието на HTML стандарта.

    Тъй като за текстови (* .txt) документи, не можете да посочите езика по никакъв начин вътре документ, посочването на сървъра е единствената алтернатива.

    Ако имате Apache/RUS на вашия сървър, препоръчително е да деактивирате всяко автоматично прекодиране, като добавите директива към .htaccess (работи, започвайки от версията Apache/RUS PL20).

    ПРЕДУПРЕЖДЕНИЕ: в последните версии на Apache, обработката на файлове по подразбиране .htaccess изключен в основната конфигурация (с директивата AllowOverride None), т.е. настройките ви няма да имат ефект. В този случай помолете уеб администратора да активира такава обработка за вашата директория, като добави директивата към съответния раздел на конфигурацията на Apache.

    какво NCSA ,

    във всяка директория, съдържаща вашите страници, създайте файл, наречен .htaccess, четим от всички със следните редове: Ако файлът .htaccess вече съществува, просто добавете тези редове там.

    Горното предполага, че вашите HTML документи завършват с .html, ако завършват с .htm, променете края на реда AddType в .htaccess на .htm

    какво е ЦЕРН ,

    какво е Microsoft IIS/4.0,

    1. Стартирайте Internet Service Manager;
    2. изберете необходимия WWW сървър и извикайте неговите свойства;
    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 съдържа текст/javascript; charset = koi8-r (обърнете внимание на отсъствие интервали в този ред);
    че някой друг HTTP сървър

    първо се опитайте да свържете разширенията .html, .htm, .shtml, .css, .js и .txt по аналогия с горните решения, за да получите кодирането в HTTP заглавката. Моля, обърнете внимание, че посочването на кодирането в HTTP заглавката има предимство пред посочването му директно в документа. Ето пълен списък с правила за приоритет, от най-високия до най-ниския:

    1. Content-Type заглавка в HTTP протокола;
    2. Маркер за подреждане на байтове за Unicode файлове (BOM);
    3. XML дестинация;
    4. МЕТА таг;
    5. CHARSET атрибут (или TYPE, определящ кодировка) в връзката.

    Ако не знаете как да посочите кодирането в своя HTTP сървър, ще трябва да редактирате самите си страници. Ако вашите HTML страници се изобразяват чрез PHP, използвайте:

    в самото начало на файла. Ако не, както и за други типове файлове, вижте метода по-долу, без да се намесвате в конфигурацията на сървъра.

    метод, без да се намесва в конфигурацията на сървъра

    В раздел на всеки HTML документ вмъкнете първата директива следния етикет:

    За стандарта HTML5 можете да използвате предходния ред или съкратената форма:

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

    В началото на таблицата със стилове (* .css) добавете следната директива:

    В стандарт HTML 4.01 можете да използвате следното:

    В стандарта HTML5 същото нещо е написано по малко по-различен начин:

    Как да проверите дали кодирането и езикът са били успешно зададени в HTTP заглавката?

    Да приемем, че вашата страница се нарича http://www.yourserver.ru/yourpath/yourpage.html

    1. Наберете:
      телнет www.yourserver.ru 80
    2. След свързване наберете:
      HEAD /yourpath/yourpage.html HTTP/1.0
      Водещ: www.yourserver.ru
      (може да се наложи да пишете сляпо на някои системи)
    3. След това натиснете Enter отново. Ще видите HTTP заглавката.
    4. Намерете полето Content-Type в него и проверете дали съдържа не само текст/html, но и
      текст/html; charset = koi8-r

    Въпроси и отговори

    За да елиминирам всякакви слухове за това дали да зададем набор от символи, цитирам изрично от Протокола за прехвърляне на хипертекст - HTTP/1.1 (RFC 2616), които имат отношение към въпроса:

    Някои HTTP/1.0 софтуер е интерпретирал заглавката на Content-Type без параметър charset неправилно, което означава „получателят трябва да отгатне“. Изпращачите, желаещи да победят това поведение, МОГАТ да включват параметър на символи, дори когато символът е ISO-8859-1 и ТРЯБВА да го правят, когато е известно, че няма да обърка получателя.

    За съжаление, някои по-стари HTTP/1.0 клиенти не се справят правилно с изричен параметър на кодиране. Получателите на HTTP/1.1 ТРЯБВА да спазват етикета с набори от символи, предоставен от подателя; и тези потребителски агенти, които имат разпоредба за "отгатване" на набор от символи, ТРЯБВА да използват набора от полето тип съдържание, ако те поддържат този набор, а не предпочитанията на получателя, при първоначалното показване на документ. Вижте раздел 3.7.1.

    3.7.1 Канонизация и текстови настройки по подразбиране

    Параметърът „charset“ се използва с някои типове носители за определяне на набора от символи (раздел 3.4) на данните. Когато изпращачът не предоставя изричен параметър на кодиране, подтиповете носители от типа „текст“ се дефинират така, че да имат стойност по подразбиране на набора от знаци „ISO-8859-1“, когато са получени чрез HTTP. Данните в набори от символи, различни от "ISO-8859-1" или неговите подмножества, ТРЯБВА да бъдат етикетирани със съответна стойност на набора от знаци. Вижте раздел 3.4.1 за проблеми със съвместимостта.

    За подробности и обосновка вижте раздела за писане на руски HTML документи (английски) и принципите на работа с кодирането. Можете също така да прочетете нашите впечатления от текущото състояние на нещата в рускоезичната мрежа и предварителни изследвания.

    Полезен ресурс за локализация, кодиране, символи и др. - "Локализация такава, каквато е".