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

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

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

С тегом </b> мы уже знакомы, с помощью него мы указываем имя документа в заголовке страницы. Теперь новый тег <b><meta> </b> (закрывающего тега не требует) с помощью него мы и будем указывать эту самую служебную информацию на нашей страничке.</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="/internet-and-wifi/pochemu-ne-udaetsya-podklyuchitsya-k-pochtovomu-serveru-ne-udaetsya-otpravit.html">Данная запись</a> указывает браузеру кодировку в которой была написана данная страница - формат документа и раскладку клавиатуры, в данном случае это кириллица для Windows. Если эту строку не писать в заголовке страницы, то есть <a href="/laptops/skachat-programmu-golosovoe-obshchenie-s-kompyuterom-luchshie-programmy-dlya.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="/browsers/chernyi-cvet-kod-html-uchebnik-html-cveta-rgb-cveta-bezopasnoi.html">html кода</a>, так <b>name="author" </b> указывает имя автора страницы, а <b>name="copyright" </b> авторское право (копирайт) в котором может указываться фамилия, имя, отчество автора сайта, название фирмы, бренда.. и т. д. Кроме того включив в заголовок документа такое описание Вы значительно упростите задачу поисковой машине при поиске Вашего сайта по имени автора, названию фирмы, бренду...</p> <p> <b><meta name ="Generator" Content="Microsoft Notepad"> </b></p> <p>Если хотите можете указать с помощью какого html редактора была написана данная страница.</p> <h2>Описание страницы и ключевые слова</h2> <p> <b><meta name="description" Content="Производим закупку по выгодным ценам рогов и копыт!"> </b></p> <p><b>Description </b> - <a href="/operators/sim800l-gprs-gsm-modul-opisanie-testovyi-pusk-gsm-modulya-sim800l-kratkoe-opisanie.html">краткое описание</a> страницы. Данное описание частенько используется <a href="/useful/bing-ustanovit-poiskovuyu-sistemu-poiskovaya-sistema-bing-i-pochta.html">поисковыми системами</a> для вывода в результатах поиска, по какому либо запросу, информации о сайте и его назначении.</p> <p> <b><meta name="keywords" Content ="рога, копыта, рожки, рог, копыто, копытце, закупка, покупка, приобретение, выгодно, продать, купить, сбыть, реализовать, корова, бык, коровьи, бычьи, оплата, деньги, наличные, цена, цене"> </b></p> <p><b>Keywords </b> - ключевые слова веб-страницы, опять таки предназначены для поисковых машин.</p> <p>Представьте что Вы ищете в какой либо поисковой системе сайт с информацией о том где можно продать те же рога и копыта:) Какие слова и фразы Вы будите вводить в строке "Поиск"? ну наверно что то типа: "Где продать коровьи рога?" или "Реализовать копыта по выгодной цене" Так вот если определить ключевые слова и так сказать предугадать мысли потенциального посетителя можно надеяться на то, что та или иная поисковая система выдаст ссылку на Ваш сайт в первых строчках результата поиска. Конечно ввод данного метоописателя не есть гарант того что именно Ваш сайт займет первые места в поиске по данным словам, но всё же не стоит им пренебрегать. Впрочем, это отдельная тема для разговора.</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="/programs/elektronnaya-pochta-sozdat-besplatnyi-pochtovyi-yashchik-elektronnaya.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="/social-networks/daite-podrobnoe-opisanie-politiki-servera-v-otnoshenii-rabota.html">данное описание</a> в заголовок данной страницы. Такое введение позволит программе роботу своевременно посещать Ваш сайт и индексировать его содержание. В нашем примере мы заявили о том, что собираемся обновлять содержание на странице не менее одного раза в 15 дней, можете не сомневаться программа робот возьмет Ваши планы себе на заметку и будет приходить "к Вам в гости" раз в пятнадцать дней, для того чтобы проверить ничего ли у Вас не изменилось..</p> <h2>Время действия документа и кэш</h2> <p>Для того чтобы ускорить загрузку страницы, а так же сэкономить трафик <a href="/social-networks/anonimaizery-i-rezhim-turbo-chto-takoe-rezhim-turbo-v-sovremennyh.html">современные браузеры</a> сохраняют посещаемые пользователем страницы в кэш (на <a href="/programs/kak-prochitat-oboznachenie-na-zhestkih-diskah-kak-ustroen.html">жёсткий диск</a>), и при повторном посещении загружают их не с сервера, а непосредственно с кэша. На самом деле такая функция хороша собой.. но есть одно "но", дело в том что в браузере может отображаться уже устаревшая информация, какой либо страницы. Представьте, к примеру, Ваш сайт представляет собой некое периодическое новостное интернет издание, а пользователь получит, вместо самых свежих новостей, уже устаревшую информацию, ту которая хранится у него в кэше!! и не разобравшись в чем "беда" примет Ваш сайт за "мертвый" заброшенный и никем не обновляемый.</p> <p>Для того чтобы принудительно заставить браузер загружать ту или иную страницу не с <a href="/phones-and-communication/formatirovanie-zhestkogo-diska-cherez-bios-mozhno-li-formatirovat-zhestkie-diski-cherez-bios-formatiro.html">жёсткого диска</a>, а с сервера необходим мета тег с данным синтаксисом, где указывается день недели, число месяц год время (чч:мм:сс) и часовой пояс(<b>GMT+03:00 </b> - время Московское + три часа). День недели и время дня можно не указывать. Теперь при чтении страницы браузером страница будет грузится с сервера, если <a href="/browsers/kak-v-odnoklassnikah-udalit-den-svoego-rozhdeniya-eto.html">указанная дата</a> и время настало или просрочено, и напротив из кэша если указанное время еще не наступило.</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>А такая запись вовсе запретит браузеру кэшировать <a href="/repair/kak-postroit-fasetnyi-poisk-s-pomoshchyu-schetchikov-fasetov-pinq--.html">данную страницу</a>.</p> <h2>Команды для робота</h2> <p> <b><meta name="robots" content="Index,follow"> </b></p> <p>Данный мета тег предназначен для подачи поисковому роботу той или иной команды.</p> <p>Список возможных команд роботу:</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>Если вдруг по каким либо причинам Вы задумаете поменять URL адрес Вашего сайта то хорошо было бы на старом месте оставить страницу вроде этой:</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, для этого напишем.

Что такое кодировка страницы, вообще - для чего нужна кодировка страницы - она помогает браузеру правильно отображать содержимое страницы. Существует огромное количество кодировок, которое нам знать вообще ни к чему. И естественно, что возможны проблемы с кодировкой страницы.

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

Навигация по странице:

    Типы и виды кодировок

  1. Нас конечно же прежде всего интересуют кодировки, которые завязаны на русском языке.
    1.

    «utf-8» – это универсальная кодировка.

    «windows-1251» – это кириллица.

    И тут конечно же я должен сказать о собственно опыте, которому уже намечается 10 лет… так вот!

    В самом начале, когда я только начинал, я начинал с кодировки «windows-1251», но с этой кодировкой, постоянно возникали какие-то проблемы, сейчас уже вспомнить будет трудно, но в конце концов, я перешел на «utf-8»

  2. Что означает обозначение utf-8


  3. И конечно же нам требуется пару строк написать о том, что же собственно означает эта самая кодировка «utf-8»:
    UTF-8 (от англ. Unicode Transformation Format, 8-bit - «формат преобразования Юникода, 8-бит») - распространённый стандарт кодирования текста, позволяющий более компактно хранить и передавать символы Юникода, используя переменное количество байт (от 1 до 4), и обеспечивающий полную обратную совместимость с 7-битной кодировкой ASCII.

    Нам в принципе нужно, чтобы наши данные отображались на станице корректно…

  4. Как определить кодировку страницы?

  5. В открытом браузере нажимаем сочетание кнопок ctrl + U. Должна открыться дополнительная страница с кодом!
  6. Где находится кодировка страницу?

  7. Обычно кодировку ставят на странице в самом начале, вот пример кодировки, здесь кодировка страницы стоит на 4 строке. И имеет вид:

    Что означет, что страница сделана в кодировке utf-8.

    Это – одна из самых распространённых кодировок.

    Либо кириллическая кодировка:

  8. Как изменить кодировку страницы html

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

  11. Иногда данная кодировка вызывает разные проблемы…

    К примеру некоторые хостинги, просто не поддерживают данную кодировку.

    Вот так будет выглядеть страница с нарушенной кодировкой.


  12. Почему на странице появляются кракозябры!?

  13. На самом деле есть несколько причин для возникновения так называемых кракозябр!
    1.

    Неправильная кодировка страницы, ну к примеру, если вы установите кодировку китайскую, а напишите кириллический текст, то что должно произойти!? Браузер просто сойдет с ума не зная, что вам показать и покажет кракозябры.

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

    3. Сервер не поддерживает данную кодировку!

  14. Как изменить неправильную кодировку!?

    1.

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

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

    3. Если это проблема сервера, то стоит попробовать внести изменения в файл - .htaccess внеся в него такую надпись:

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

    Во-первых, настоятельно рекомендую, чтобы все документы были в одной кодировке и база данных, а именно поля со строковыми данными, имели такую же кодировку. Устанавливается она при создании базы или же можно указывать сравнение для каждого отдельного поля. Если создаёте БД с помощью 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. Китайские символы, если я не ошибаюсь, вообще кодируются тремя байтами, поэтому в дальнейшем для таких случаев, чтоб не возникало никаких недорозумений, используйте соответствующие функции.

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

    1. У нас есть файл: Мойфайл.html.
    2. Надо сохранить его в кодировке Юникод -> UTF-8. Решение 1.
    1. Открываеем Мойфайл.html в текстовом редакторе Блокнот .
    2. Выбикаем «Сохранить как…».
    3. Выбираем кодировку UTF-8.
    4. Жмем кнопку - Сохранить.

    Решение 2.
    1. Открываем Мойфайл.html в текстовом редакторе Notepad++ (еще есть редактор PSPad)
    2. Меню -> Кодировки.
      Здесь видим (Notepad++ определяет сам) кодировку открытого нами файла.
    3. Выбираем Преобразовать в UTF-8 без BOM (BOM - Byte Order Mark).
      (Кодироака "UTF-8 без BOM" предпочтительна и отличается от просто "UTF-8").
    4. Меню -> Файл -> Сохранить.

    Определение кодировки браузерами

    Мы сами сообщаем браузеру о том, какая кодировка установлена для данного HTML файла.
    Делается это посредством META-тега 1) В приведенном примере браузеру дается указание, что загруженный HTML-файл сохранен в кодировке utf-8. Если HTML-файл сохранен в кодировке windows-1251, то: 2) Важно!
    При перекодировке файлов не забывайть изменять директивы в META-теге на актуальные.
    Если в META-теге указана одна кодировка, а файл сохранен в другой кодировке, то на экране мы увидем "абракадабру".

    3) Если в META-теге указана нужная кодировка, а сайт все равно отображает "абракадабру", то нужно проверить настройку сайта на хостинге (веб-сервере).
    Обычно на хостингне в настройках сайта указана кодировка utf-8.
    Если в настройках хостинга указана кодировка windows-1251, то нужно сменить настройку на utf-8.