Кодировка страницы примеры и ошибки кодировок. Кодировка страницы примеры и ошибки кодировок Кодировка html документа

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

Во-первых, настоятельно рекомендую, чтобы все документы были в одной кодировке и база данных, а именно поля со строковыми данными, имели такую же кодировку. Устанавливается она при создании базы или же можно указывать сравнение для каждого отдельного поля. Если создаёте БД с помощью phpMyAdmin, то сложностей возникнуть не должно: закладка "Базы данных" > в поле под "Создать базу данных" вписываете имя вашей будущей БД > рядом выпадающий список "Сравнения". Если же создаёте базу sql-запросом, то пишите примерно следующее:

CREATE DATABASE IF NOT EXISTS `my_db_name` CHARACTER SET utf8 COLLATE utf8_general_ci;

Выбор кодировки остаётся за вами, но я бы посоветовал выбрать для документов "UTF-8 без BOM " и сравнение для базы "utf8_general_ci " (юникод многоязычный, регистронезависимый ). Только не забудьте подстраховаться и сделать дамп перед манипуляциями с БД! Не буду здесь расписывать, что такое BOM , но если о-о-очень образно и на пальцах, то это такой невидимый маркер, который планировался для различения кодировок UTF-16LE и UTF-16BE, но по некоторым причинам оказался невостребованным и теперь мешает веб-разработчикам жить спокойно;) Выглядит BOM, как символ U+FEFF и селится в начале документа. А почему всё-таки UTF-8? Вот, хотя бы пара причин... Вы без проблем сможете выводить на экран как кириллицу, так и цитату из стихов Аль-Мутанабби или китайские иероглифы. Всё потому, что в той же кодировке windows-1251 (cp1251) всего лишь 256 символов, в то время, как в UTF-8 их около ста тысяч, плюс ко всему специальные символы, пиктограммы, значки и т.д. Если вы собираетесь использовать на своём сайте ajax-запросы, то это так же добавляет плюс к кодировке UTF-8, потому что именно с этой кодировкой дружит объект XMLHttpRequest, а с другими придётся извращаться и иногда безуспешно. Та же карта сайта (sitemap.xml), которая служит для индексации поисковыми системами, работает только, если этот файл создан с кодировкой UTF-8. Кроме того, эта кодировка является стандартом для работы многих функций PHP и стандартом, который рекомендован W3C .

При создании нового документа - всё ясно, а как быть с уже существующим, в котором желательно изменить кодировку? Один из самых простых способов - это открыть документ в Notepad++ , выбрать в меню "Кодировки " и в списке "Преобразовать в UTF-8 без BOM ". Далее изменяем метатег с определением кодировки:

И для php-файлов можно установить соответствующий заголовок, но только, если файл не подключен в другом документе, где такой заголовок уже будет отправлен раньше. Это касается как заголовка в метатеге, так и отправленного функцией header:

Header("Content-Type: text/html; charset=utf-8");

Проверяем результат в браузере. Тут может несколько вариантов:

  1. Всё выводится отлично и вопрос закрыт
  2. Статически прописанные данные отображаются нормально, но данные из БД - всё тами же "кракозябрами"
  3. Ничего не изменилось и кодировка осталась кривой

Начнём с последнего пункта. Счастливые владельцы выделенных серверов или VPS/VDS, могут изменить кодировку для директивы default_charset в конфигурационном файле php.ini. Тем же, кто доступа к php.ini не имеет или имеет, но необходимо изменить кодировку только для одного сайта, можно использовать файл.htaccess, записав в него следующее:

# в принципе, хватает строки ниже: AddDefaultCharset UTF-8 # но иногда, могут потребоваться дополнительные установки: DefaultLanguage ru php_value default_charset "utf-8"

Файл.htaccess распологается в корне вашего сайта. Если вы его там не обнаружили, то создаём сами. В обычном блокноте создаёте документ > "Сохранить как " > Тип файла выбрать "Все файлы " > в поле "Имя файла" записываем только точку и расширение ".htaccess ".

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

SET NAMES utf8;

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

// для устаревшего mysql_* $db = mysql_connect("localhost", "username", "password"); mysql_select_db("db_name", $db); mysql_query("SET NAMES utf8"); // для PDO и версий php ниже 5.3.6 $dbh = new PDO("mysql:host=localhost;dbname=db_name", "username", "password"); $dbh->exec("SET NAMES utf8"); // для PDO и версий php 5.3.6 и новее, можно указывать прямо при создании объекта $dbh = new PDO("mysql:host=localhost;dbname=db_name;charset=utf8", "username", "password"); // или $db = new PDO("mysql:host=localhost;dbname=db_name", "username", "password", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")); // для MySQLi $mysqli = new mysqli("localhost", "username", "password", "db_name"); $mysqli->set_charset("utf8");

Раз уж затронул вопрос "устаревшего mysql_*", то хочу обратить ваше внимание, на текст выделенный красным в документации php. Cто́ит задуматься...
Если у вас была одна из стандартных проблем, то выполнив некоторые или все вышеописанные шаги, с кодировкой вопрос будет решен положительно. Но так же хотелось бы упомянуть о некоторых функциях, которые могут пригодится в нестандартных ситуациях. Подробнее о них вы сможете прочитать в документации, а я лишь приведу пару примеров, не вдаваясь в подробности:

Mb_internal_encoding() C помощью этой функции, мы можем установить или получить текущую кодировку скрипта: mb_internal_encoding("UTF-8"); // устанавливаем echo mb_internal_encoding(); // без аргумента - получаем mb_http_input() и mb_http_output() Две функции, которые определяют, устанавливают или получают кодировку символов HTTP запроса или вывода: print_r(mb_http_input("I")); // определяем кодировку входных данных http-запроса mb_http_output("UTF-8"); // устанавливаем кодировку для http-вывода echo mb_http_output(); // получаем текущую кодировку символов http-вывода iconv() Функция преобразовывает символы строки в нужную кодировку: echo iconv("utf-8","cp1251","Привет, РјРёСЂ!"); // Привет, мир! mb_convert_encoding() Функция похоже на iconv(), но на мой взгляд лучше, т.к. работает более адекватно. echo mb_convert_encoding("Привет, РјРёСЂ!","cp1251","utf-8"); // Привет, мир!

Да и вообще, не забываем про аналоги функций для работы с многобайтными строками . Чаще всего, они имеют такое же название, но с приставкой mb_ . Разницу ощутить достаточно просто. Возьмём, для примера, функции strlen() и mb_strlen() и проведём эксперимент, измерив длину строки:

// установим внутреннюю кодировку mb_internal_encoding("utf-8"); // для латинских символов разницы нет echo strlen("incode"); // 6 echo mb_strlen("incode"); // 6 // А вот с кириллицей выдает - пичалька echo strlen("инкод"); // 10 echo mb_strlen("инкод"); // 5

Может кому и не нужно объяснять это явление, но для новичков растолкую: кириллица кодируется двумя байтами, а strlen() считает именно количество байт в строке, а не количество букв. Вот и получается, что пять кириллических символов умножить на два - получаем 10. Китайские символы, если я не ошибаюсь, вообще кодируются тремя байтами, поэтому в дальнейшем для таких случаев, чтоб не возникало никаких недорозумений, используйте соответствующие функции.

Повторюсь, что эти решения к часто встречающимся случаям и в подавляющем большинстве, они решают проблему. Но если у вас возникла ситуация, когда всэ эти способы не возымели действия, то пишите сюда, попробуем разобраться вместе и дополним статью новым "рецептом от головной боли" ;) Засим позвольте откланяться.

При неправильной кодировке весь сайт или его часть отображаются в виде «кряпозяблов», т.е. непонятных символов, делающих текст нечитаемым. Такая ситуация может возникнуть при неверной настройки кодировки веб-сервера или при отсутствии настроек. Рассмотрим возможные варианты и способы устранения проблем

Неправильная кодировка HTML страниц

Создадим тестовый файлик:

Sudo gedit /var/www/html/encoding.html

Скопируем в него:

Проверка кодировки

Откроем этот файл в браузере http://localhost/encoding.html

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

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

Добавим эту строку к нашему тестовому файлику, чтобы получилось так:

Проверка кодировки

Тестовый файл для проверки кодировки

Как мы можем убедиться на следующем скриншоте, проблема решена:

Если кодировка вашего файла отличается от UTF-8 , то вместо неё поставьте windows-1251 или ту, которая соответствует кодировке веб-страницы. Чтобы научиться определять кодировку файлов, посмотрите .

Это был самый простой способ исправления проблемы с кодировкой - без изменения настроек сервера.

Вернём наш тестовый файл в исходное состояние и продолжим изучение способов указания кодировки.

Если файлы .htaccess включены настройками Apache, то эти файлы можно использовать чтобы указывать кодировку отправляемых веб-сервером страниц. Чтобы включить поддержку файлов .htaccess в конфигурационном файле Apache (/etc/apache2/apache2.conf ) найдите группу строк

Options Indexes FollowSymLinks AllowOverride None Require all granted

И в ней замените

AllowOverride None

AllowOverride All

После этого сервер нужно перезапустить.

Sudo systemctl restart apache2.service

Файл .htaccess должен быть размещён в той же директории, что и сайт. Мой сайт размещён в корневой директории веб-сервера. Если у вас также, то теперь в папке /var/www/html/ создайте файл .htaccess и добавьте в него директиву AddDefaultCharset после которой укажите желаемую кодировку. Примеры

AddDefaultCharset UTF-8

AddDefaultCharset windows-1251

Можно указать кодировку, которая будет применена только к файлам определённого формата:

AddCharset utf-8 .atom .css .js .json .rss .vtt .xml

Набор файлов может быть любым, например:

AddCharset utf-8 .html .css .php .txt .js

Следующий вариант является альтернативным и также позволяет устанавливать кодировку для файлов определённого типа, для него нужно, чтобы был включён mod_headers :

Header set Content-Type "text/html; charset=utf-8"

Ещё один вариант, который также можно использовать в файле .htaccess для установки кодировки UTF-8:

IndexOptions +Charset=UTF-8

Если сайт на PHP, то дополнительно может понадобиться продублировать кодировку с php_value default_charset :

AddDefaultCharset windows-1251 php_value default_charset "cp1251"

Можно вместо создания файла.htaccess установить кодировку в конфигурационном файле веб-сервера. Для Apache CentOS/Fedora это файл httpd.conf, а на Debian/Ubuntu это файл apache2.conf. Добавьте следующую строку для установки кодировки и перезапустите веб-сервер, чтобы изменения вступили в силу:

AddDefaultCharset UTF-8

Как установить UTF-8 кодировку в PHP

В PHP скрипте для установки кодировки используется header , например:

Header("Content-Type: charset=utf-8");

Обычно вместе с кодировкой также указывают тип содержимого (в примере вариант для HTML страницы):

Header("Content-Type: text/html; charset=utf-8");

Ещё один вариант для RSS ленты:

Header("Content-type: text/xml; charset=utf-8");

Помните, что функция header должна быть вызвана перед любым выводом в браузер. В противном случае (если вывод в браузер уже был сделан), то уже были отправлены и заголовки. Очевидно, что в этом случае их уже невозможно поменять. Если в браузер было выведено сообщение об ошибке, то заголовки также уже были отправлены и использование header вызовет ошибку. Для проверки, были ли уже отправлены заголовки, используйте headers_sent .

Описанный способ работает только когда PHP скрипт полностью генерирует содержимое страницы. Статические страницы (такие как html) вы должны сохранять в кодировке utf-8. Большинство веб серверов обратят внимание на кодировку файла и добавят соответствующий заголовок. На самом деле, сохранение PHP файла в кодировке utf-8 приведёт к такому же результату.

Неправильная кодировка результатов из базы данных MySQL

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

Нужно начать с определения кодировки ваших таблиц. Можно посмотреть в phpMyAdmin :

Обратите внимание на столбец «Сравнение », запись «utf8_unicode_ci » означает, что используется кодировка UTF-8 .

Можно подключиться к СУБД MySQL и проверить кодировку таблиц без phpMyAdmin. Для этого:

Mysql -u root -p

Если вы забыли имя базы данных, то выполните команду:

SHOW DATABASES;

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

USE information_schema;

Если вы забыли имя таблиц, выполните:

SHOW FULL COLUMNS FROM имя_таблицы;

Например:

SHOW FULL COLUMNS FROM GLOBAL_STATUS;

Вы увидите примерно следующее:

Смотрите столбец Collation . В моём случае там utf8_general_ci , это, как и utf8_unicode_ci , кодировка UTF-8 . Кстати, если вы не знаете в чём разница между кодировками utf8_general_ci , utf8_unicode_ci , utf8mb4_general_ci , utf8mb4_unicode_ci , а также какую кодировку выбрать для базы данных MySQL, то посмотрите .

Теперь, когда мы узнали кодировку (в моём случае это UTF-8), то при каждом подключении к СУБД MySQL нужно выполнять последовательно запросы:

SET NAMES UTF8 SET CHARACTER SET UTF8 SET character_set_client = UTF8 SET character_set_connection = UTF8 SET character_set_results = UTF8

В PHP это можно сделать примерно так:

$this->mysqli = new mysqli($server, $username, $password, $basename); if ($this->mysqli->connect_error) { $this->errorHandler_c->logError(1, "Connect Error (" . $this->mysqli->connect_errno . ") " . $this->mysqli->connect_error, $_SERVER ["REQUEST_URI"]); } $this->mysqli->query("SET NAMES UTF8"); $this->mysqli->query("SET CHARACTER SET UTF8"); $this->mysqli->query("SET character_set_client = UTF8"); $this->mysqli->query("SET character_set_connection = UTF8"); $this->mysqli->query("SET character_set_results = UTF8");

Обратите внимание, что UTF8 вам нужно заменить на ту кодировку, которая используется для ваших таблиц.

Изменение кодировки файлов

Если вы решили пойти другим путём и вместо установки новой кодировки изменить кодировку ваших файлов, то посмотрите статью « ». В ней рассказано, как узнать текущую кодировку файлов и как конвертировать файлы в любую кодировку (не только UTF-8).

Как узнать, какую кодировку отправляет сервер

Если вы хотите узнать, какие настройки кодировки имеет веб-сервер (какую кодировку передаёт в заголовках), то воспользуйтесь следующей командой:

Curl URL -s -o /dev/null -D /dev/stdout | grep -E "charset"

В ней вместо URL вставьте реальный адрес проверяемого сайта. Если сайт использует HTTPS, то укажите адрес сайта вместе с протоколом, например

Curl https://softocracy.ru -s -o /dev/null -D /dev/stdout | grep -E "charset"

Какую кодировку выбрать для веб-сайта

В первой главе этого учебника, об общем построении html документа, я говорил о том, что все html документы должны иметь вот такой шаблон кода:

- начало документа
- начало головы
- закрытие головы
- начало тела
- закрытие тела
- конец документа

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

С тегом </b> мы уже знакомы, с помощью него мы указываем имя документа в заголовке страницы. Теперь новый тег <b><meta> </b> (закрывающего тега не требует) с помощью него мы и будем указывать эту самую <a href="/terminalnye-komandy-seagate-pereschet-translyatora-kak-prishlos-proshit-zhestkii.html">служебную информацию</a> на нашей страничке.</p> <b><meta> </b> тег имеет следующие атрибуты: <ul><li><b>http-equiv </b> - указывает браузеру как следует обработать основное содержание документа, точнее на основе каких данных.</li><li><b>name </b> - информационное имя. (применяется в паре с атрибутом <b>content </b>)</li><li><b>content </b> - информационное содержание, связанное с мета именем (<b>name </b>)</li> </ul><p>Теперь на примерах будем вникать в суть дела.</p> <h2>Кодировка символов и язык</h2> <p>Пример (очень нужный и важный):</p> <p> <b><meta http-equiv="Content-Type" Content="text/html; Charset=Windows-1251"> </b></p> <p>Сначала расскажу зачем необходима эта строка в заголовке html документа. <a href="/kak-sdelat-sinhronizaciyu-telefona-avtomaticheskaya-sinhronizaciya.html">Данная запись</a> указывает браузеру кодировку в которой была написана данная страница - формат документа и раскладку клавиатуры, в <a href="/how-to-open-the-phone-in-gta-how-to-get-the-child-out-of-the-phone.html">данном случае</a> это кириллица для Windows. Если эту строку не писать в заголовке страницы, то есть <a href="/luchshie-programmy-dlya-obshcheniya-v-internete-programmy-dlya-obshcheniya-v-internete.html">большая вероятность</a> что весь текст на Вашей странице отобразится в виде непонятных человеку "иероглифов" у <a href="/windows-7-virtualnye-rabochie-stoly-raznye-polzovateli-dexpot-dopolnitelnye-virtualnye-rabochie.html">разных пользователей</a> тех или иных браузеров. Конечно, пользователь может применить к такому документу команду в браузере <b>Вид->Кодировка->Кириллица </b>, но он может не знать о данной функции, да и зачем утруждать человека данным действием.</p> <p>Теперь разберём по "слогам" нашу запись:<br><b><meta http-equiv="Content-Type" </b> - указываем что в этом мета теге мы будем заниматься <b>Content-Type </b> - типом содержания<br><b>Content="text/html; </b> - а именно его текстом<br><b>Charset=Windows-1251"> </b> - документ для Windows - Кириллица где <b>1251 </b> кодировка раскладки клавиатуры, так например Английская клавиатура будет задаваться <b>Charset=Windows-1252 </b></p> <p>В настоящее время продвинутые веб-мастера рекомендуют использовать кодировку <b>UTF 8 </b></p> <p>То есть писать в голове документа вот так:</p> <p> <b><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </b></p> <p> <b><meta http-equiv="Content-Language" Content="ru"> </b></p> <p>В этой строчке говорится о том что язык <b>Language </b> документа является русским <b>Content="ru" </b></p> <p>Неправильная установка языка и раскладки клавиатуры может привести к печальным последствиям.</p> <h2>Информация о документе</h2> <p> <b><meta name="author" Content="Остап Бендер"> </b> <br><b><meta name="copyright" Content=""Рога и копыта" Остап Бендер"> </b></p> <p>Данные метаописатели предназначены для заявления об авторских правах непосредственно в заголовке <a href="/chto-daet-kod-stranicy-v-vk-kak-izmenit-html-kod-stranicy-v.html">html кода</a>, так <b>name="author" </b> указывает имя автора страницы, а <b>name="copyright" </b> авторское право (копирайт) в котором может указываться фамилия, имя, отчество автора сайта, название фирмы, бренда.. и т. д. Кроме того включив в заголовок документа такое описание Вы значительно упростите задачу <a href="/kak-funkcioniruyut-poiskovye-mashiny-i-kak-pravilno-stroit-zaprosy-tipy.html">поисковой машине</a> при поиске Вашего сайта по имени автора, названию фирмы, бренду...</p> <p> <b><meta name ="Generator" Content="Microsoft Notepad"> </b></p> <p>Если хотите можете указать с помощью какого <a href="/novoe-v-kategorii-html-html-reader-besplatnyi-html-redaktor.html">html редактора</a> была написана данная страница.</p> <h2>Описание страницы и ключевые слова</h2> <p> <b><meta name="description" Content="Производим закупку по выгодным ценам рогов и копыт!"> </b></p> <p><b>Description </b> - <a href="/universalnyi-arhivator-dlya-windows-10-kakoi-arhivator-luchshe.html">краткое описание</a> страницы. Данное описание частенько используется поисковыми системами для вывода в результатах поиска, по какому либо запросу, информации о сайте и его назначении.</p> <p> <b><meta name="keywords" Content ="рога, копыта, рожки, рог, копыто, копытце, закупка, покупка, приобретение, выгодно, продать, купить, сбыть, реализовать, корова, бык, коровьи, бычьи, оплата, деньги, наличные, цена, цене"> </b></p> <p><b>Keywords </b> - <a href="/prodvizhenie-klyuchevyh-slov-chto-takoe-klyuchevye-slova-i-kak-ih.html">ключевые слова</a> веб-страницы, опять таки предназначены для поисковых машин.</p> <p>Представьте что Вы ищете в какой либо поисковой системе сайт с информацией о том где можно продать те же рога и копыта:) Какие слова и фразы Вы будите вводить в строке "Поиск"? ну наверно что то типа: "Где продать коровьи рога?" или "Реализовать копыта по выгодной цене" Так вот если определить ключевые слова и так сказать предугадать мысли потенциального посетителя можно надеяться на то, что та или иная <a href="/poisk-po-vsem-poiskovym-sistemam-poiskovye-sistemy-rossii-i-lidiruyushchie.html">поисковая система</a> выдаст ссылку на Ваш сайт в первых строчках результата поиска. Конечно ввод данного метоописателя не есть гарант того что именно Ваш сайт займет первые места в поиске по данным словам, но всё же не стоит им пренебрегать. Впрочем, это <a href="/cherstvyi-category-php-php-kategorii-derevo-kategorii-kak-smenit.html">отдельная тема</a> для разговора.</p> <p>Помните что описание <b>description </b> не должно превышать по длине более 200 символов, а ключевые слова <b>keywords </b> 1000 символов, иначе это может пагубно отразится при продвижении Вашего сайта в ТОП поисковых систем.</p> <h2>Адрес</h2> <p> <b><meta name="Publisher-Email" Content="Ваш_e-mail@сервер.домен"> </b> <br><b><meta name="Publisher-URL" Content="http://www.Ваш_сайт/"> </b></p> <p>Думаю понятно.. здесь указывается адрес Вашего <a href="/kak-udalit-elektronnyi-pochtovyi-yashchik-na-yandekse-kak-udalit-pochtu-to.html">почтового ящика</a> <b>Publisher-Email </b> и адрес сайта <b>Publisher-URL </b></p> <h2>Обновление страницы</h2> <p> <b><meta name ="revisit-after" Content="15 days"> </b></p> <p>Если некая страница на Вашем сайте подразумевает постоянное обновление и/или дополнение информационным содержанием, то хорошо было бы включить <a href="/kabel-hdmi-opisanie-hdmi-polnoe-opisanie-i-harakteristiki.html">данное описание</a> в заголовок данной страницы. Такое введение позволит программе роботу своевременно посещать Ваш сайт и индексировать его содержание. В нашем примере мы заявили о том, что собираемся обновлять содержание на странице не менее одного раза в 15 дней, можете не сомневаться программа робот возьмет Ваши планы себе на заметку и будет приходить "к Вам в гости" раз в пятнадцать дней, для того чтобы проверить ничего ли у Вас не изменилось..</p> <h2>Время действия документа и кэш</h2> <p>Для того чтобы ускорить загрузку страницы, а так же сэкономить трафик <a href="/chto-hranitsya-v-cookies-failah-chto-takoe-cookie-i-kak-pochistit-kuki-v.html">современные браузеры</a> сохраняют посещаемые пользователем страницы в кэш (на <a href="/televizor-samsung-ne-vidit-vneshnii-zhestkii-disk-televizor-ne-vidit-zhestkii.html">жёсткий диск</a>), и при повторном посещении загружают их не с сервера, а непосредственно с кэша. На самом деле такая функция хороша собой.. но есть одно "но", дело в том что в браузере может отображаться уже устаревшая информация, какой либо страницы. Представьте, к примеру, Ваш сайт представляет собой некое периодическое новостное интернет издание, а пользователь получит, вместо самых свежих новостей, уже устаревшую информацию, ту которая хранится у него в кэше!! и не разобравшись в чем "беда" примет Ваш сайт за "мертвый" заброшенный и никем не обновляемый.</p> <p>Для того чтобы принудительно заставить браузер загружать ту или иную страницу не с <a href="/proverka-zhestkogo-diska-kompyutera-diagnostika-zhestkogo-diska.html">жёсткого диска</a>, а с сервера необходим мета тег с данным синтаксисом, где указывается день недели, число месяц год время (чч:мм:сс) и часовой пояс(<b>GMT+03:00 </b> - время Московское + три часа). День недели и время дня можно не указывать. Теперь при чтении страницы браузером страница будет грузится с сервера, если указанная дата и время настало или просрочено, и напротив из кэша если указанное время еще не наступило.</p> <p>Ниже на всякий случай приведены таблицы сокращений от Английских слов на месяцы и дни недели</p> <td valign="top"> </td> <p>Атрибуту <b>content </b> можно присвоить значение <b>"0" <meta http-equiv="Expires" content="0"> </b> в этом случае страница всегда будет загружаться с сервера.</p> <p>И еще.. некоторые поисковые роботы могут отказаться индексировать документ с заведомо устаревшей датой. - не искушайте судьбу..</p> <p> <b><meta http-equiv="pragma" content="no-cache"> </b></p> <p>А такая запись вовсе запретит браузеру кэшировать данную страницу.</p> <h2>Команды для робота</h2> <p> <b><meta name="robots" content="Index,follow"> </b></p> <p>Данный мета тег предназначен для подачи поисковому роботу той или иной команды.</p> <p>Список <a href="/windows-10-ne-razdaet-wifi-vozmozhnye-oshibki-i-nepoladki-komanda-sozdanie.html">возможных команд</a> роботу:</p> <ul><li><b>Index </b> - индексировать страницу</li><li><b>Noindex </b> - не индексировать страницу</li><li><b>Follow </b> - прослеживать гиперссылки на странице</li><li><b>Nofollow </b> - не прослеживать гиперссылки на странице</li><li><b>All </b> - индексировать страницу и прослеживать гиперссылки на странице (по умолчанию)</li><li><b>None </b> - не индексировать страницу и не прослеживать гиперссылки на странице</li> </ul><h2>Автоматический переход на другую страницу</h2> <p> <b><meta content="10; URL=http://www.mysite/index.html"> </b></p> <p>Если вдруг по каким либо причинам Вы задумаете поменять <a href="/soobshchenie-url-http-yuv-chto-takoe-url-adres-biblioteki-dlya-raboty-s-http--.html">URL адрес</a> Вашего сайта то хорошо было бы на старом месте оставить страницу вроде этой:</p> <p> <html> <br> <head> <br> <meta http-equiv="Content-Type" Content="text/html; Charset=Windows-1251"> <br><b><meta content="10; URL=http://www.mysite/index.html"> </b> <br> <title>Переадресация



Адрес сайта был изменен, через 10 секунд Ваш браузер будет автоматически перенаправлен по новому адресу:
http://www.mysite.ru/
Нажмите здесь для того чтобы выполнить переход немедленно.
Приносим извинения за доставленные неудобства.


Разберём и осмыслим строчку из примера:

meta - Refresh (восстановление) указывает браузеру что данную страницу необходимо обновить
content="10; - обновить через заданное количество секунд (в нашем случае десять)
URL=http://www.mysite/index.html" - адрес новой/другой страницы на которую следует перейти.

А вот если в заголовке Refresh URL адрес упустить, как показано в примере, то тогда браузер будет постоянно через каждые 30 секунд (ну или не 30.. сколько пропишите через столько и будет..) обновлять содержимое данной страницы.

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

Эффекты при переходе по ссылке


Данные заголовки создают визуальные эффекты при переходе с одной страницы на другую.

  • Page-Enter - Эффект появления страницы
  • Page- Exit - Эффект исчезновения страницы

В которых:

  • Duration - время действия эффекта в секундах
  • Transition - Один из номеров предлагаемых эффектов (от 0 до 23) перечисленных в таблице:
Номер Описание эффекта Номер Описание эффекта
0 Прямоугольники внутрь 12 Растворение
1 Прямоугольники наружу 13 Вертикальная панорама внутрь
2 Круг внутрь 14 Вертикальная панорама наружу
3 Круг наружу 15 Горизонтальная панорама внутрь
4 Наплыв наверх 16 Горизонтальная панорама наружу
5 Наплыв вниз 17 Уголки влево - вниз
6 Наплыв вправо 18 Уголки влево - вверх
7 Наплыв влево 19 Уголки вправо – вниз
8 Вертикальные жалюзи 20 Уголки вправо – вверх
9 Горизонтальные жалюзи 21 Случайные горизонтальные полосы
10 Шажки горизонтальные 22 Случайные вертикальные полосы
11 Шажки вертикальные 23 Случайный выбор эффекта

Файл page1.html





Эффекты перехода страниц



На заметку:


Эффекты перехода с одной страницы на другую работают не во всех браузерах.




"Перейти"


Файл page2.html





Эффекты перехода страниц



На заметку:


Эффекты открытия и закрытия веб-страниц будут видны только при переходе
от одной страницы к другой или же при помощи кнопок "назад" "вперёд".
При первом открыти страницы, а также во время перезагрузки
эффекты перехода видны не будут.


Нажмите на "Перейти" чтобы перейти к следующей странице
и оценить эффект перехода от одной странице к другой.


"Перейти"


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

    Заголовок Refresh (автоматический переход на другую страницу) можно использовать не совсем стандартно.. Некоторые авторы используют его для создания своего рода "презентации" слайд шоу, где сменяющиеся страницы и есть кадры презентации. Представьте заходит человек на такой сайт а тут ему "Откинетесь на спинку кресла и расслабьтесь..":) а далее сами по себе пошли картинки, графики, тексты.. а последняя страница тупиковая где пользователь берёт сайт "в свои руки" или же может замыкаться на первую. Только всегда помните о золотом правиле веб-мастера: Главное не переборщить!

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

Р-аказать сайт Сѓ нас - это создать сайт недорого Рё качественно

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

Наиболее часто встречаются типы кодировки для русского языка передаваемые в заголовке документа:

Windows-1251 - Кириллица (Windows).
KOI8-r - Кириллица (КОИ8-Р)
cp866 - Кириллица (DOS).
Windows-1252 - Западная Европа (Windows).
Windows-1250 - Центральная Европа (Windows).
UTF-8 - двух байтовая кодировка

Теперь рассмотрим указание кодировки по умолчанию через файл.htaccess (если это файла нету, надо его создать, имя файла начинается с точки)

AddDefaultCharset задает дефолтную таблицу символов (кодировку) для всех выдаваемых страниц на веб-сервере Apache

Достаточно добавить 1 строку

AddDefaultCharset UTF-8

AddDefaultCharset WINDOWS-1251

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

При загрузке файла на сервер возможна перекодировка. Указываем, что все получаемые файлы будут иметь кодировку windows-1251, для этого напишем.